【发布时间】:2013-01-01 13:32:51
【问题描述】:
我有一个将 Visibility 设置为“Collapsed”的控件和一个用于更改 Visibility.Collapsed 和 Visibility.Hidden 之间可见性的 ToggleButton。根据MSDN Documentation,当控件的可见性设置为“折叠”时,布局内不应为控件分配空间,但两个枚举之间没有视觉差异。此外,控件的 Visibility 最初设置为 Collapsed,因此控件的初始绘图不应为控件分配任何空间。
是否有我遗漏的概念,或者我如何让元素仅在可见时占用空间?我的最终目标是让控件出现在基于用户选择的条件下,这些选择出现在所述显示可变控件的北部,所有控件之间的边距一致。
XAML 代码段:
<StackPanel>
<TextBox Name="hideTest" DataContext="{StaticResource persistentMemoryBridge}" Text="HIDETEST" Margin="0,327,31,491" Foreground="Black" Background="Orange" Visibility="Collapsed" />
<TextBox DataContext="{StaticResource persistentMemoryBridge}" Text="{Binding Path=PropertyTest}" Margin="0,386,31,432" Foreground="Black" Background="Yellow"/>
<ToggleButton Name="tbVisibility" Content="Toggle" Click="ToggleButton_Click" Margin="0,445,65,391"></ToggleButton>
</StackPanel>
代码隐藏:
private void ToggleButton_Click(object sender, RoutedEventArgs e) {
switch (hideTest.Visibility) {
case System.Windows.Visibility.Collapsed: {
hideTest.Visibility = Visibility.Hidden;
tbVisibility.Content = "Hidden";
break;
}
case System.Windows.Visibility.Hidden: {
hideTest.Visibility = Visibility.Visible;
tbVisibility.Content = "Visible";
break;
}
case System.Windows.Visibility.Visible: {
hideTest.Visibility = Visibility.Collapsed;
tbVisibility.Content = "Collapsed";
break;
}
}
}
【问题讨论】:
-
不要这样使用边距。使用其他类型的容器,例如
Grid或DockPanel -
这条评论有点不清楚。如果顶部/底部和控件的边距通常为 10。高度 50. 已折叠,堆叠控件之间的预期边距应为 20,而不是 70。
-
不过,不要使用这样的边距。期间。
-
Margin="0,386,31,432"是什么布局??看起来您在设计器中拖放了 UI 元素。 WPF 不适用于拖放器。 -
@sammarcow 即使控件已折叠,也很有可能会尊重边距。检查这个。
标签: wpf user-interface layout wpf-controls