我有这个Xaml代码
<ListView x:Name="listOrderList" Margin="58,55,0,0" Background="{x:Null}">
<ListView.View>
<GridView>
<GridViewColumn Header="DESCRIPTION" DisplayMemberBinding="{Binding Description}"/>
<GridViewColumn Header="STATUS">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding Status}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
在C#中,我有一个enum
状态,我知道显然<Image Source="{Binding Status}"/>
无效。但是,如何做一些事情,例如我在Status
枚举中有两个值。说是和否。如何为枚举值指定小图标并轻松使用绑定。
谢谢你。
答案 0 :(得分:2)
通过它,您可以检查绑定传递的值,然后创建要显示的Image
对象。
答案 1 :(得分:2)
要么使用绑定转换器,要么将DataTriggers添加到DataTemplate。以下示例假定以下枚举
public enum Status { Status1, Status2 }
并根据Source
属性的值将Image的Status
属性设置为不同的图像资源。
<Window.Resources>
<BitmapImage x:Key="Image1" UriSource="..."/>
<BitmapImage x:Key="Image2" UriSource="..."/>
</Window.Resources>
...
<DataTemplate>
<Image x:Name="image"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Status}" Value="Status1">
<Setter TargetName="image" Property="Source"
Value="{StaticResource Image1}"/>
</DataTrigger>
<DataTrigger Binding="{Binding Status}" Value="Status2">
<Setter TargetName="image" Property="Source"
Value="{StaticResource Image2}"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
答案 2 :(得分:1)
您可以将图标图像路径设置为枚举,然后使用该枚举绑定DataGrid。
<DataGridTemplateColumn x:Name="colStatus" Width="160" Header="Status">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" OverridesDefaultStyle="True" Width="135">
<Image Height="14" Margin="2,0,0,0" HorizontalAlignment="Left" Source="{Binding Status}" Width="14" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>