Wpf 通过xaml在datagrid行标题上设置图像
我试图设置一个Wpf 通过xaml在datagrid行标题上设置图像,wpf,xaml,mvvm,Wpf,Xaml,Mvvm,我试图设置一个数据网格,以便在行标题中有一个图像来显示列出的每个对象的状态 为了实现这一点,我在视图模型中有一个IsTaskCompletedSuccessfullynullable布尔属性 在我的参考资料中,我添加了以下样式的图像: <DataGrid.Resources> <Image x:Name="editImage" x:Key="rowHeaderTemplate"
数据网格
,以便在行标题
中有一个图像来显示列出的每个对象的状态
为了实现这一点,我在视图模型中有一个IsTaskCompletedSuccessfully
nullable布尔属性
在我的参考资料中,我添加了以下样式的图像:
<DataGrid.Resources>
<Image x:Name="editImage"
x:Key="rowHeaderTemplate"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Width="16"
Margin="1,0">
<Image.Style>
<Style TargetType="Image">
<Style.Triggers>
<DataTrigger Binding="{Binding IsTaskCompletedSuccessfully}" Value="true">
<Setter Property="Source" Value="/RFiDGear;component/Resources/confirm.ico"/>
</DataTrigger >
<DataTrigger Binding="{Binding IsTaskCompletedSuccessfully}" Value="false">
<Setter Property="Source" Value="/RFiDGear;component/Resources/error.ico"/>
</DataTrigger >
<DataTrigger Binding="{Binding IsTaskCompletedSuccessfully}" Value="{x:Null}">
<Setter Property="Source" Value="/RFiDGear;component/Resources/wait.ico"/>
</DataTrigger >
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</DataGrid.Resources>
下面是我的划手风格:
<DataGrid.RowHeaderStyle>
<Style TargetType="{x:Type DataGridRowHeader}">
<Setter Property="Content" Value="{StaticResource rowHeaderTemplate}"/>
</Style>
</DataGrid.RowHeaderStyle>
不幸的是,它只适用于最后添加的行/对象,而不是所有行。我错过了什么
Edit1:
我将样式编辑为RowHeaderTemplate。后来我发现数据绑定不能以这种方式正常工作。我的图像源不会更新。运行时,输出窗口中没有绑定错误
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<Image x:Name="editImage"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Width="16"
Margin="1,0">
</Image>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsTaskCompletedSuccessfully}" Value="True">
<Setter TargetName="editImage" Property="Source" Value="/RFiDGear;component/Resources/confirm.ico"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsTaskCompletedSuccessfully}" Value="False">
<Setter TargetName="editImage" Property="Source" Value="/RFiDGear;component/Resources/error.ico"/>
</DataTrigger>
<!--<DataTrigger Binding="{Binding IsTaskCompletedSuccessfully}" Value="{x:Null}">
<Setter TargetName="editImage" Property="Source" Value="/RFiDGear;component/Resources/wait.ico"/>
</DataTrigger>-->
</DataTemplate.Triggers>
</DataTemplate>
</DataGrid.RowHeaderTemplate>
让它工作起来了。我必须与relativesource合作才能找到datacontext
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<Image x:Name="editImage"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Width="16"
Margin="1,0">
</Image>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DataGridRow}, Path=DataContext.IsTaskCompletedSuccessfully}" Value="True">
<Setter TargetName="editImage" Property="Source" Value="/RFiDGear;component/Resources/confirm.ico"/>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DataGridRow}, Path=DataContext.IsTaskCompletedSuccessfully}" Value="False">
<Setter TargetName="editImage" Property="Source" Value="/RFiDGear;component/Resources/error.ico"/>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DataGridRow}, Path=DataContext.IsTaskCompletedSuccessfully}" Value="{x:Null}">
<Setter TargetName="editImage" Property="Source" Value="/RFiDGear;component/Resources/wait.ico"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</DataGrid.RowHeaderTemplate>