gpt4 book ai didi

wpf - DataGrid RowStyle - DataTrigger 中的绑定(bind)值

转载 作者:行者123 更新时间:2023-12-05 02:19:27 26 4
gpt4 key购买 nike

我想构建一个 RowStyle,它根据两个条件 (OR) 更改行的 Visibility

默认情况下,无论 bool 值(在 ViewModel 中)设置为 True 还是 DataTable 中绑定(bind)到 的值,所有行都应该折叠并且可见>Datagrid,等于当前User。因此,当前用户当然也是一个属性。

<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>

但是在值绑定(bind)处出现了错误...

我已经四处搜索,但找不到解决这个问题的方法。

我希望有人能帮助我。

最佳答案

不能Value 属性绑定(bind)到 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();
}
}
}

关于wpf - DataGrid RowStyle - DataTrigger 中的绑定(bind)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42839104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com