이 답변을 찾을 수 없습니다.WPF - 프로그래밍 방식으로 추가 된 GridViewColumns에 대해 DataTemplate을 설정하십시오.
다양한 열 수를 포함 할 수있는 WPF ListView 컨트롤이 있습니다. 예를 들어 ID, 이름, 가격, NumberInStock, Manufacturer를 표시하는 제품을 포함 할 수있는 고객 데이터를 표시하거나 열 ID, 이름, 전자 메일 등을 표시 할 수 있습니다.
내가 원하는 것은 특정 열이 데이터를 다르게 표시하는 것입니다. 예를 들어 NumberInStock 열의 값으로 'Yes'또는 'No'를 인쇄하는 대신 깔끔한 이미지를 표시하고 싶습니다.
바인딩 할 고정 된 이름을 가진 고정 된 양의 열이 있다면이 방법이 쉽습니다. 특정 열에 대해 DataTemplate을 정의하면이 열을 사용하여 열의 뷰를 정의 할 수 있습니다. 그러나, 나는 나의 상황에서 그것을하는 방법을 볼 수 없다.
저는 WPF에 매우 익숙합니다. 제 접근 방식이 좋지 않을 때 실례합니다 :-) 제 XAML에서 ListView 컨트롤을 정의했습니다. 이것은 꽤 비어 있습니다. 뒤에 내 코드에서, 내가 사용
// get all columns from my objects (which can be either a Customer of Product)
foreach (string columnName in MyObject.Columns)
{
GridViewColumn column = new GridViewColumn();
// Bind to a property of my object
column.DisplayMemberBinding = new Binding("MyObject." + columnName);
column.Header = columnName;
column.Width = 50;
// If the columnname is number of stock, set the template to a specific datatemplate defined in XAML
if (columnName == "NumberInStock")
column.CellTemplate = (DataTemplate)FindResource("numberInStockImageTemplate");
explorerGrid.Columns.Add(column);
}
좋아, 내가 (! 당신이 어떤 조언이 있다면, 제발) 가장 큰 문제는 내가 어떤을 볼 수 있다는 것입니다하지만 조금 더 예뻐 할 수있는 확신 열의 차이. 그냥 'NumberInStock'열의 텍스트 값을 표시합니다. 내 DataTemplate이는 XAML에 정의되어
물론<Window.Resources>
<DataTemplate x:Name="NumberInStock" x:Key="NumberInStock">
<Border BorderBrush="Red" BorderThickness="2.0">
<DockPanel>
<Image Width="24" Height="24" Margin="3,0" Source="..\Images\instock.png" />
</DockPanel>
</Border>
</DataTemplate>
</Window.Resources>
, 나는 아직도 그것을 표시 할 기능을 추가해야 할 것 '예'또는 '아니요'이미지 NumberInStock의 값에 따라,하지만 그 단계 2 정말. 내 ListView에서 이미지와 빨간색 경계선을 보게되어 기쁩니다! 사전에
감사합니다, 즐즈
고마워, 그게 실제로 문제 같아. SP1에 포함 된 DataGrid 컨트롤을 사용하기 위해 이미 코드를 편집했습니다. 어쨌든 내 상황에 더 적합 할 수 있습니다. 그러나 이것이 올바른 해결책입니다. 많은 감사합니다! – Razzie