Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 通过xaml在datagrid行标题上设置图像_Wpf_Xaml_Mvvm - Fatal编程技术网

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>