Wpf 将行选择绑定到ViewModel';s属性

Wpf 将行选择绑定到ViewModel';s属性,wpf,binding,datagrid,Wpf,Binding,Datagrid,这应该是简单的,但我坚持它。如果我的DataGrid绑定到一个集合(比如DataTable),并且项目的一个公共属性(DataRows)被命名为ishighlight,我可以将我的DataGrid的行IsSelected状态绑定到此属性吗,因此,通过选择/取消选择相应的DataGrid行,表中属性值的更改将反映在UI中?试试这个 <DataGrid.RowStyle> <Style TargetType="{x:Type DataGri

这应该是简单的,但我坚持它。如果我的
DataGrid
绑定到一个集合(比如
DataTable
),并且项目的一个公共属性(DataRows)被命名为
ishighlight
,我可以将我的DataGrid的行
IsSelected
状态绑定到此属性吗,因此,通过选择/取消选择相应的DataGrid行,表中属性值的更改将反映在UI中?

试试这个

         <DataGrid.RowStyle>
            <Style TargetType="{x:Type DataGridRow}">
                <Setter Property="IsSelected" Value="{Binding IsHighlighted}"/>
            </Style>
        </DataGrid.RowStyle>

试试这个

         <DataGrid.RowStyle>
            <Style TargetType="{x:Type DataGridRow}">
                <Setter Property="IsSelected" Value="{Binding IsHighlighted}"/>
            </Style>
        </DataGrid.RowStyle>

上面的代码片段似乎是正确的,只需稍加修改。 试试这个



我假设您已经在模型类中实现了INotifyPropertyChanged接口。

上面的代码片段经过轻微修改似乎是正确的。 试试这个



我假设您已经在模型类中实现了INotifyPropertyChanged接口。

通过Snoop解决了这个问题。
DataGridRow
DataContext
(当
DataGrid
绑定到
DataTable
时)是
DataRowView
而不是
DataRow
。问题是,
ishighlight
是通过
DataRow
的分部类添加的公共属性,因此没有进入
DataRowView
。现在,我通过DataSet designer向数据表添加了一个显式列,一切正常。希望它能帮助以后的人。

通过Snoop发现了这一点。
DataGridRow
DataContext
(当
DataGrid
绑定到
DataTable
时)是
DataRowView
而不是
DataRow
。问题是,
ishighlight
是通过
DataRow
的分部类添加的公共属性,因此没有进入
DataRowView
。现在,我通过DataSet designer向数据表添加了一个显式列,一切正常。希望它能帮助其他人。

与Snoop联系,了解行的数据上下文并与相应的源代码绑定。@Sankarann:
for(int i=0;i<100;i++)注释。追加(“谢谢”)@Sankarann:Snoop是一种工具中的一颗宝石。我明白了。查看我的答案。请与Snoop联系,以了解行的DataContext并与相应的源绑定。@Sankarann:
for(int i=0;i<100;i++)注释。追加(“谢谢”)@Sankarann:Snoop是一种工具中的一颗宝石。我明白了。看我的答案。你的解决方案实际上是正确的。另一方面我错了。看看我的答案。谢谢你的努力。你的解决方案实际上是正确的。另一方面我错了。看看我的答案。谢谢你的努力。你的解决方案实际上是正确的。另一方面我错了。看看我的答案。谢谢你的努力。你的解决方案实际上是正确的。另一方面我错了。看看我的答案。谢谢你的努力。