C# WPF中的数据触发条件检查
如果可能,请给出DataTrigger的条件C# WPF中的数据触发条件检查,c#,wpf,xaml,setter,datatrigger,C#,Wpf,Xaml,Setter,Datatrigger,如果可能,请给出DataTrigger的条件 <DataTrigger Binding="{Binding MessageBoxImage}" Value="{x:Static MessageBoxImage.Error}"> <Setter Property="Source" Value="../Images/Error48.png"></Setter> </DataTrigger> <DataTrigger Binding="{B
<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代码,在这个错误中,Hand,Stop都设置了相同的图像
我的问题是,这三个值有什么可能给出或满足的条件吗?(或单行语句)
谢谢,您可以用于和条件。至于条件,你可以使用转换器
<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>
简单的DataTrigger用于检查单个值。如果可能,您可以使用Multi-DataTrigger检查多个条件。使用simple DataTrigger可以检查单个值。如果可能,您可以使用Multi-DataTrigger检查多个条件。@Vikram-您可以使用
IValueConverter
,它将根据传递给它的值返回true(错误,手动停止)。@Sankarann:如果可能,将其放入应答中,Thanks@RohitVats:哦,是的,在代码隐藏中,我们将为此创建属性,并在此处设置true和checks,xaml中是否有任何选项?不,xaml中没有任何可能的方法。另外,multidatatirger
是和
操作,而不是或
操作。MultiDataTrigger
用于和
操作<代码>或
操作无法通过MultiDataTrigger实现。所以唯一的方法是使用IValueConverter到后端代码,不可能使用或在XAML中使用,现在我明白了,多亏了RohitVats和Tony
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");
}
}