在设计时,我希望能够控制多个组件的可见性,我希望能够从单个属性控制所有isHidden。 到目前为止,我的代码看起来像这样
ignoreable="e d"
<StackPanel d:IsHidden=true>
...
</StackPanel>
<StackPanel e:IsHidden=false>
...
</StackPanel>
<StackPanel d:IsHidden=true>
...
</StackPanel>
<StackPanel e:IsHidden=false>
...
</StackPanel>
是否可以通过单个变量控制所有面板的可见性?
所以看起来像这样
<StackPanel d:IsHidden=isVisibleVar>
...
</StackPanel>
<StackPanel e:IsHidden=isVisibleVarOther>
...
</StackPanel>
我知道转换器。我知道如何在运行时执行此操作,我想要一种快速的方法来从一个位置在两组可见性之间进行切换,而不是搜索和替换
答案 0 :(得分:0)
找到了解决方法。 为每个组使用一种样式。那么我只需要在两个位置设置可见性即可。
<Style x:Key="MainButtonStyle"
TargetType="Button"
BasedOn= "{StaticResource BasicButton}">
<Setter Property="Visibility" Value="Visible"></Setter>
</Style>
<Style x:Key="SecButtonStyle"
TargetType="Button"
BasedOn= "{StaticResource BasicButton}">
<Setter Property="Visibility" Value="Hidden"></Setter>
</Style>
答案 1 :(得分:0)
我的回答可能不是那么复杂,并且不只使用“单个变量” ,而是可以解决问题的(使用两个变量)。
因此,首先在XAML中定义两个变量。例如,直接在Window.Resources
中,例如:
<Window ...
xmlns:system="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
>
<Window.Resources>
<system:Boolean x:Key="ShowInDemoMode">False</system:Boolean>
<system:Boolean x:Key="HideInDemoMode">True</system:Boolean>
</Window.Resources>
...
</Window>
或-如果您有一个-的样式为ResourceDictionary
<ResourceDictionary ...
xmlns:system="clr-namespace:System;assembly=mscorlib"
>
<system:Boolean x:Key="ShowInDemoMode">False</system:Boolean>
<system:Boolean x:Key="HideInDemoMode">True</system:Boolean>
...
</ResourceDictionary>
然后您可以像这样使用两者:
<StackPanel d:IsHidden="{StaticResource HideInDemoMode}">
...
</StackPanel>
<StackPanel d:IsHidden="{StaticResource ShowInDemoMode}">
...
</StackPanel>
<StackPanel d:IsHidden="{StaticResource HideInDemoMode}">
...
</StackPanel>
<StackPanel d:IsHidden="{StaticResource ShowInDemoMode}">
...
</StackPanel>
使用此静态资源,您可以通过更改这两个资源的值轻松地在StackPanel
项目的可见性之间切换。
备注:
将d:IsHidden
设置为true
或false
仅在DesignTime中有效,并且将在运行您的应用程序时显示项目,这与your answer有很大的区别。