私はアイテムのリストを持っています
public List<Item> MyItems { get; set; }
DataGrid に表示されます。1 つの列には、テンプレートによって定義されたステータス「アイコン」が表示されます。コードは次のようになります。
列テンプレート [...]
<DataGridTemplateColumn Header="Status">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid Height="18" Width="35">
<Rectangle Fill="{Binding Status.Background}" />
<TextBlock Text="{Binding Status.Text}" />
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
データ・モデル [...]
public class Item
{
public int ItemId { get; set; }
public string Name { get; set; }
public int StatusId { get; set; }
public Status Status { get; set; }
}
public class Status
{
public int StatusId { get; set; }
public int Text { get; set; }
public Brush Background
{
get
{
//Colour logic goes here
}
}
}
データ モデルからカラー ロジックを削除し、代わりにリソース ファイルに配置したいと考えています。
<DataGridTemplateColumn Header="Status" CellTemplate="{StaticResource MyCustomTemplate}" </DataGridTemplateColumn>
これまでのところ正しい方向に進んでいることを願っていますが、この時点で、Status プロパティ (または StatusId) を MyCustomTemplate にバインドする方法がわからないため、迷っています。
誰かがこれで私を助けることができれば、それは素晴らしいことです.
編集
これはうまくいきます。
<DataGridTemplateColumn Header="V" Width="25" IsReadOnly="True" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<ic:CloseIcon Visibility="{Binding DockStatus, Converter={StaticResource CloseIconDisplayVisibilityConverter}}" />
<ic:DockIcon Visibility="{Binding DockStatus, Converter={StaticResource DockIconDisplayVisibilityConverter}}" />
<ic:UndockIcon Visibility="{Binding DockStatus, Converter={StaticResource UndockIconDisplayVisibilityConverter}}" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
これは、モデルが変更されたときに UI を更新しません (DockStatus の変更)。
<DataGridTemplateColumn Header="V" Width="25" IsReadOnly="True" CellEditingTemplateSelector="{StaticResource DockIconCellTemplateSelector}}">