DataGrid RowStyle - DataTrigger 中的绑定值
Posted
技术标签:
【中文标题】DataGrid RowStyle - DataTrigger 中的绑定值【英文标题】:DataGrid RowStyle - Binding Value in DataTrigger 【发布时间】:2017-08-07 22:10:38 【问题描述】:我想构建一个 RowStyle
,它会根据两个条件 (OR) 更改行的 Visibility
。
默认情况下,无论布尔值(在 ViewModel 中)设置为 True
还是绑定到 Datagrid
的 DataTable
中的值等于当前用户,所有行都应折叠并可见。所以,当前用户当然也是一个属性。
<DataGrid.RowStyle>
<Style TargetType="x:Type DataGridRow">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="Binding RelativeSource=RelativeSource AncestorType=x:Type Window,Mode=FindAncestor,Path=DataContext.ColleaguesVisible" Value="True">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
<DataTrigger Binding="Binding CreatingUser" Value="Binding CurrentStaffMember">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
但是在值绑定处有错误...
我已经四处寻找,但找不到解决此问题的方法。
我希望有人可以帮助我。
【问题讨论】:
【参考方案1】:您不能将Value
属性绑定到DataTrigger
到某个东西,因为它不是依赖属性。
你可以做的是使用转换器:
<DataGrid ... x:Name="dgr" xmlns:local="clr-namespace:WpfApp2">
<DataGrid.Resources>
<local:Converter x:Key="conv" />
</DataGrid.Resources>
<DataGrid.RowStyle>
<Style TargetType="x:Type DataGridRow">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="Binding RelativeSource=RelativeSource AncestorType=x:Type Window,Mode=FindAncestor,Path=DataContext.ColleaguesVisible" Value="True">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
<DataTrigger Binding="Binding Path=., Converter=StaticResource conv" Value="True">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>
namespace WpfApp2
public class Converter : IValueConverter
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
DataRowView drv = value as DataRowView;
if(drv != null)
return drv["CreatingUser"].ToString() == drv["CurrentStaffMember"].ToString();
return false;
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
throw new NotImplementedException();
【讨论】:
谢谢,正是我需要的。不管怎样,我把Userstuff移到了DataRowView.Filter
,但在我还需要的Button
s中使用了这个。【参考方案2】:
“CreatingUser”在哪里?在 DataContext(your item) 行中,还是在 DataGrid 后面的 ViewModel 中,或者在 Window 后面的 ViewModel 中?
也许这是你的问题?
【讨论】:
以上是关于DataGrid RowStyle - DataTrigger 中的绑定值的主要内容,如果未能解决你的问题,请参考以下文章
Wpf DataGrid RowStyle 如何使用图像或画笔作为背景
DataGrid RowStyle - DataTrigger 中的绑定值