Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF中的数据触发条件检查_C#_Wpf_Xaml_Setter_Datatrigger - Fatal编程技术网

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

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的条件

<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");
    }
}