gpt4 book ai didi

c# - WPF 中的数据触发条件检查

转载 作者:太空宇宙 更新时间:2023-11-03 10:52:47 25 4
gpt4 key购买 nike

是否可以在 DataTrigger 上给出条件?

<DataTrigger Binding="{Binding MessageBoxImage}" Value="{x:Static MessageBoxImage.Error}">
<Setter Property="Source" Value="../Images/Error48.png"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding MessageBoxImage}" Value="{x:Static MessageBoxImage.Hand}">
<Setter Property="Source" Value="../Images/Error48.png"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding MessageBoxImage}" Value="{x:Static MessageBoxImage.Stop}">
<Setter Property="Source" Value="../Images/Error48.png"></Setter>
</DataTrigger>

所以,这是我的 Xaml 代码,在那个 Error、Hand、Stop 中都设置了相同的图像

我的问题是可以为这三个值给出 OR 条件吗? (或一行语句)

谢谢,

最佳答案

您可以使用 MultiDataTrigger对于 AND 条件。至于 OR 条件,您可以使用转换器。

<Window.Resources>
<someNs:ORConverter x:Key = "ORConverter"/>
</Window.Resources>

....

<DataTrigger Value="True">
<DataTrigger.Binding>
<Binding Path="MessageBoxImage" Converter="{StaticResource ORConverter}">
<Binding.ConverterParameter>
<x:Array Type="MessageBoxImage">
<x:Static MemberType="MessageBoxImage" Member="Error" />
<x:Static MemberType="MessageBoxImage" Member="Information" />
<x:Static MemberType="MessageBoxImage" Member="Question" />
</x:Array>
</Binding.ConverterParameter>
</Binding>
</DataTrigger.Binding>

<Setter Property="Source" Value="../Images/Error48.png"></Setter>
</DataTrigger>

和转换器的代码:

public class ORConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
var list = parameter as IList;
if (list == null)
return false;

foreach (var o in list)
{
if (Equals(o, value))
return true;
}

return false;
}

public object ConvertBack(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException("Cannot convert back");
}
}

关于c# - WPF 中的数据触发条件检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20780573/

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