我在这个例子中有两个控件但是在实际的应用程序中我有更多的whick,具体取决于Grid one中属性的内容值(例如),其他一些标签,TextBoxes,TextBlocks和Buttons将是在网格2中可见或折叠(例如)。
但为了简化我的问题,我将有一个简化的例子......
<Grid Name="gridOne">
<Label Content="{Binding Collection.Name}" Name="lblCaption"/>
</Grid>
<Grid Name="gridTwo">
<Label Content="My Label" Visibility="Collapsed">
<Label.Style>
<Style TargetType="Label">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=lblCaption, Path=Content}" Value="Employers">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Label.Style>
</Label>
<TextBox Text="{Binding EmployerName}" Visibility="Collapsed">
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=lblCaption, Path=Content}" Value="Employers">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</Grid>
我知道如果我将属性Visibility as Collapsed设置为默认控件但我有很多集合并且我不认为每个Collection有一个DataTrigger是实现它的好方法,这也行不通。无论如何,当在一个好的方式处理属性Visibility时,在不同的网格中绑定控件时会出现一个问题。
提前致谢!
答案 0 :(得分:2)
本地值比样式触发器花费precedence。将可见性初始化移动到样式中:
<Label Content="My Label">
<Label.Style>
<Style TargetType="Label">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=lblCaption, Path=Content}" Value="Employers">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Label.Style>
</Label>