gpt4 book ai didi

基于对象类型的WPF触发器

转载 作者:行者123 更新时间:2023-12-03 07:44:02 25 4
gpt4 key购买 nike

有没有办法对触发器的对象类型进行比较?

<DataTrigger Binding="{Binding SelectedItem}" Value="SelectedItem's Type">
</DataTrigger>

背景:我有一个工具栏,我想根据当前为所选项目对象设置的子类来隐藏按钮。

谢谢

最佳答案

这是基于 @AndyG 的答案,但更安全一些,因为它是强类型的。

实现一个名为 DataTypeConverter 的 IValueConverter,它接受一个对象并返回其类型(作为 System.Type):

public class DataTypeConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
return value?.GetType() ?? Binding.DoNothing;
}

public object ConvertBack(object value, Type targetType, object parameter,
CultureInfo culture)
{
throw new NotImplementedException();
}
}

更改 DataTrigger 以使用转换器,并将值设置为类型:

<DataTrigger Binding="{Binding SelectedItem,  
Converter={StaticResource DataTypeConverter}}"
Value="{x:Type local:MyType}">
...
</DataTrigger>

在资源中声明DataTypeConverter:

<UserControl.Resources>
<v:DataTypeConverter x:Key="DataTypeConverter"></v:DataTypeConverter>
</UserControl.Resources>

关于基于对象类型的WPF触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1652341/

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