C# MultiDataTrigger使堆栈面板子项可见并协同应用
我有几个属性,如果这些值是真的 如果为true,我希望堆栈面板子级可见。 如果为假,则崩溃 据我所知,我需要使用多数据触发器和条件 但是我不知道该把二传手普罗佩里放在哪里 ataching ma XAML代码:C# MultiDataTrigger使堆栈面板子项可见并协同应用,c#,wpf,setter,stackpanel,multidatatrigger,C#,Wpf,Setter,Stackpanel,Multidatatrigger,我有几个属性,如果这些值是真的 如果为true,我希望堆栈面板子级可见。 如果为假,则崩溃 据我所知,我需要使用多数据触发器和条件 但是我不知道该把二传手普罗佩里放在哪里 ataching ma XAML代码: <Style x:Key="ShowHideStyle" TargetType="StackPanel" > <Style.Triggers> <MultiDataTrigger> <
<Style x:Key="ShowHideStyle" TargetType="StackPanel" >
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Value="True">
<Condition.Binding>
<MultiBinding Converter="{StaticResource V_converter }">
<Binding Path="Type"></Binding>
<Binding Path="NodeID"></Binding>
<Binding Path="TLV"></Binding>
</MultiBinding>
</Condition.Binding>
</Condition>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="Visibility" Value="Visible" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
</Style.Triggers>
</Style>
下面的工作是否默认为崩溃? 我的WPF有点生锈,但如下所示:
<Style x:Key="ShowHideStyle" TargetType="StackPanel" >
<Style.Setters>
<Setter Property="Visibility" Value="Collapsed" />
</Style.Setters>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Value="True">
<Condition.Binding>
<MultiBinding Converter="{StaticResource V_converter }">
<Binding Path="Type"></Binding>
<Binding Path="NodeID"></Binding>
<Binding Path="TLV"></Binding>
</MultiBinding>
</Condition.Binding>
</Condition>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="Visibility" Value="Visible" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
</Style.Triggers>
</Style>
注意第二行和可见性设置器下方的行 只有在实现IMultiValueConverter接口的转换器类返回true时,才能使用多重绑定绑定到多个属性,并将StackPanel的可见性属性设置为可见:
<Style x:Key="ShowHideStyle" TargetType="StackPanel">
<!-- default Visibility: -->
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource V_converter}">
<Binding Path="Type" />
<Binding Path="NodeID" />
<Binding Path="TLV" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
当我复制这段代码时,所有的东西都被折叠了。并且不受属性的影响。当我复制这段代码时,所有的东西都被折叠了。并且不受属性的影响。那么您的转换器类是如何实现的?当StackPanel应该可见时,它是否返回true?它返回System.Windows.Visibility.visible更改DataTrigger的值,然后:。或者更好的方法是从转换器返回布尔值true或false。然而,我希望它能做到这一点。就是把所有的孩子都折叠起来,然后把他们藏起来。看起来你找到了答案,但这里有一句话:如果你的V_转换器返回可见性,不要触发任何东西,就去吧。