首先,值得一提的是,我查看了其他类似的主题,他们帮助我获得了这么多,但我需要一点帮助才能完成终点线。WPF从DataTrigger更改图像
我遇到的问题是,我不能让我的DataTrigger显示正确的图像,当InPossesion布尔标志设置为false我将我的枚举属性设置为IconImage2,这反过来应该改变数据网格中的图像为红色圆圈,这不会发生。如果任何人都可以给我任何指点,说明我出错的地方会很棒。
视图模型枚举
public enum IconEnum
{
IconImage1,
IconImage2
}
public IconEnum MyIconEnumProperty
{
get { return _myEnum; }
set
{
_myEnum = value;
RaisePropertyChanged("MyIconEnumProperty");
}
}
视图模型方法加载订单
private void LoadCloakroomOrders()
{
CloakroomOrderRepository repo = new CloakroomOrderRepository();
//Get All orders
var orders = repo.GetPublic();
foreach (var orderItem in orders)
{
Orders.Add(orderItem);
if (orderItem.InPossesion == false)
{
MyIconEnumProperty = IconEnum.IconImage2;
}
}
}
XAML
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Orders}"
SelectedItem="{Binding Path=SelectedCloakroomOrder}"
Margin="0,23,0,-0.5" Width="980" >
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Visibility="{Binding ShowIcon,
Converter={StaticResource BooleanToVisibilityConverter},
FallbackValue=hidden}" >
<Image.Style>
<Style TargetType="Image">
<Setter Property="Source" Value="/Resources/Images/circle_green.png"/>
<Style.Triggers>
<DataTrigger Binding="{Binding MyIconEnumProperty}" Value="IconImage2">
<Setter Property="Source" Value="/Resources/Images/circle_red.png"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
谢谢!
请发布一个问题,解释您遇到的问题,您只需要发布要求... – 2014-10-27 14:18:27
请勿为视图暴露'enum'。视图模型可以使用enum(来自某些业务逻辑)的值,并将其转换为图像源,您可以使用该图像源来绑定视图图像。 – Sinatr 2014-10-27 14:51:56