我有,我想基於關閉的2個依賴屬性隱藏或顯示畫布:設置可見
IsPropA
IsPropB
如果這些都是真的,我想在畫布上顯示。如果兩者都是錯誤的,我希望隱藏Canvas。
我知道如何才能做到只有一個屬性。但我不確定如何使用多個屬性來完成它。
<Canvas Grid.Row="2" x:Name="sesimicTeam" Visibility="{Binding IsPropA}">
我有,我想基於關閉的2個依賴屬性隱藏或顯示畫布:設置可見
IsPropA
IsPropB
如果這些都是真的,我想在畫布上顯示。如果兩者都是錯誤的,我希望隱藏Canvas。
我知道如何才能做到只有一個屬性。但我不確定如何使用多個屬性來完成它。
<Canvas Grid.Row="2" x:Name="sesimicTeam" Visibility="{Binding IsPropA}">
你可以使用MultiDataTrigger
<Canvas Grid.Row="2" x:Name="sesimicTeam">
<Canvas.Style>
<Style>
<Setter Property="Control.Visibility" Value="Visible" />
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=IsPropA}" Value="false" />
<Condition Binding="{Binding Path=IsPropB}" Value="false" />
</MultiDataTrigger.Conditions>
<Setter Property="Control.Visibility" Value="Hidden" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Canvas.Style>
</Canvas>
現在它會顯示你的畫布,如果你的屬性之一是真的
是的,這是答案。 – webdad3
您可以使用風格,兩個觸發器實現這一目標:
<Canvas Grid.Row="2" x:Name="sesimicTeam">
<Canvas.Style>
<Style TargetType="Canvas">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsPropA}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsPropB}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Canvas.Style>
</Canvas>
是這樣的。 – webdad3
你可以用IMultiValueConverter
來做到這一點。該接口接受任意數量的綁定並返回單個值。
XAML
<Canvas>
<Canvas.Resources>
<converter:BooleanToVisibilityMultiConverter x:Key="BooleanToVisibilityMultiConverter" />
</Canvas.Resources>
<Canvas.Visibility>
<MultiBinding Converter="{StaticResource BooleanToVisibilityMultiConverter}">
<Binding Path="IsPropA" />
<Binding Path="IsPropB" />
</MultiBinding>
</Canvas.Visibility>
</Canvas>
C#
public class BooleanToVisibilityMultiConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return values.OfType<bool>().Any(b => b) ? Visibility.Visible : Visibility.Hidden;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
解決方法:創建第三個屬性,把你的邏輯顯示有帆布。 – Eugene