【发布时间】:2015-04-21 17:50:17
【问题描述】:
我正在尝试将StackPanel 添加到我的应用程序中,该应用程序仅在用户选中CheckBox 时才可见。我为此写的xaml在这里:
<Window>
<Grid>
<StackPanel>
<StackPanel Orientation="Horizontal">
<CheckBox Content="Override Offsets?" Name="offsetCB" Margin="5" Checked="OffsetOverride_Checked" Unchecked="OffsetOverride_Unchecked"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Visibility="Collapsed">
<StackPanel.Style>
<Style TargetType="{x:Type StackPanel}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=offsetCB, Path=IsChecked}" Value="True">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
<TextBlock Margin="5" Text="Can you see me?"/>
</StackPanel>
</StackPanel>
</Grid>
<Window>
当检查CheckBox 时,没有任何变化,但我没有看到任何异常或类似的东西。我们的想法是,一旦它起作用,我将添加更多元素,而不是单个 TextBlock。
我觉得我可能犯了一个简单的错误,任何建议都将不胜感激。
【问题讨论】:
-
为什么不直接绑定到stackpanel的Visibility属性呢?而不是使用 DataTriggers.. 一旦你决定这样做,你可能不得不使用转换器
-
它们包含在
StackPanel中,而Grid又位于Grid中。为了清楚起见,我将编辑问题。正如您可能知道的那样,我远不是 WPF 专家。