현재 C# WPF DataGrid
으로 작업 중입니다.
DataGrid
은 (는) 데이터베이스를 ItemsSource
으로 사용하고 있으며 주문 번호는 DataGrid
입니다. 예
:셀의 가변 값을 기준으로 DataGrid 행의 배경을 설정하는 방법
BIG BURGER 1
BIG MAC 1
버거 1맥 너겟 2
CHICKEN 2
코카콜라 2
PEPSI 2
로서 너는 내가 각 주문서의 물건을 열거하고 있음을 알 수있다. 각 항목 옆에 숫자 1 또는 숫자 2가 있습니다.이 숫자는 어느 항목이 어떤 순서에 속하는지 의 방향을 맞추도록 도와줍니다.
제 질문은 항목이 특정 주문에 속하는 방법입니다 (예 : 항목이 주문 1과 연결될 때 빨간색, 항목이 주문 2와 연결될 때 파란색). 또는 각 주문의 마지막 행만 페인트 할 수도 있습니다 (아래 굵은 글씨 부분을보십시오).
어떻게 든 그들을 분리해야합니다. 왜냐하면 내가 데이터 그리드에로드 할 때 더러워 보일 테니까요.
이 상상해
BIG BURGER 1 BIG MAC 1
버거 1
맥 너겟 2
CHICKEN 2
코카콜라 2
PEPSI 2
BIG BURGER 3
BIG MAC 3
버거 3
맥 너겟 3
CHICKEN 4
코카콜라 4
PEPSI 4
그것은 매우 지저분 보인다 ..
(앞에서 말했듯이, 각 행의 마지막 행만 페인트 할 수 있습니다. 전체 행을 사용할 수없는 경우 화면에서 눈에 띄는 간격을 만들 수 있습니다.)
이것은 내가 지금까지 무엇을 가지고 있지만 하드 코딩 값을 사용하기 때문에이 최적되지 않습니다 : BEHIND
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding NumberOfOrder}" Value="1">
<Setter Property="Background" Value="Red"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding NumberOfOrder}" Value="2">
<Setter Property="Background" Value="Green"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding NumberOfOrder}" Value="3">
<Setter Property="Background" Value="Orange"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
CODE :
public partial class MainWindow : Window
{
public MainWindow()
{
try
{
InitializeComponent();
this.WindowStartupLocation = WindowStartupLocation.CenterScreen;
this.WindowState = WindowState.Maximized;
datagrid1.ItemsSource = OrdersController.localOrders();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
다음
당신은 내가 사용하고 볼 수 있듯이을 하드 코딩 된 값, 내 NumberOfOrder
이 1,2 또는 3 인 경우 다음 :페인트 행, 그리고 이것은에 대해 여러 가지 값이 있으므로 좋지 않습니다.. 매트의 대답 AFTER
편집 :
public MainWindow()
{
InitializeComponent();
CollectionViewSource collectionViewSource = new CollectionViewSource();
var ordersList = OrdersController.localOrders(); //ORDERS LIST
collectionViewSource.Source = new List<OrdersController.OrdersLocal>()
{
foreach(var item in ordersList)
{
new OrdersController.OrdersLocal() {Title = item.Title, NumberOfOrder = item.NumberOfOrder, Desc = item.Desc, User = item.User }
}
};
collectionViewSource.GroupDescriptions.Add(new PropertyGroupDescription("NumberOfOrder"));
DataContext = collectionViewSource;
}
.. ..Anyone를? :( –
아 이제 알았습니다 ;-) 훨씬 더 간단하게 할 수 있습니다 : collectionViewSource.Source = ordersList; 또는 OrdersLocal 클래스를 사용하려는 경우 LINQ 쿼리를 수행 할 수 있습니다. collectionViewSource.Source = ordersList.Select (x => new OrdersLocal() {Title = x.Title}); – Mat
감사합니다. 멋지다. 주문을 접었을 때 앱을 사용하는 사람이 주문이 축소 되어도 내용을 볼 수 있도록 텍스트 (예 : 각 그룹의 헤더 텍스트와 같은)를 넣을 수 있습니다. 예를 들어 나는 붕괴를 클릭하지만 다음과 같은 텍스트를보고 싶습니다 : numberofOrder, 그래서 내가 축소 된 순서를 맞출 수 있습니다 :) –