用户控制的可见性
本文关键字:可见性 控制 用户 | 更新日期: 2023-09-27 18:13:32
在我的应用程序中有一个侧边栏,它包含这两个组件:
<Grid x:Name="AF" Visibility="Visibility">
<betata:AForm Height="508" VerticalAlignment="Top"/>
</Grid>
<Grid x:Name="AN" Visibility="Collapsed">
<betata:ANav Height="508" VerticalAlignment="Top"/>
</Grid>
在AForm得到超链接按钮使用以下方法:
private void HyperlinkButton_Click(object sender, RoutedEventArgs e)
{
Visibility = Visibility.Collapsed;
Sidebar sb = new Sidebar();
sb.AN.Visibility = Visibility.Visible;
}
,但我不知道为什么aForm会崩溃,但AN不能变得可见。或者是否有其他解决方案来实现::
在主页中调用UC_A::
<DWDS_LULCS_Views_Sidebar:Sidebar HorizontalAlignment="Left" Width="264"/>
- 主页面持有
- 用户控件A(侧边栏)持有
- 用户控制B (admin登录表单)和
- 用户控制C(管理导航菜单)
UC_B默认为可见,点击UC_B中的按钮调用UC_A的UC_C将可见性改为可见?
这个问题终于解决了…我这样做,在全局变量中做一些东西来验证是否使其可见和折叠,然后给侧边栏(layout_updated)一个事件处理程序。当我修改UC_B的可见性时,UC_A会受到影响,触发触发。最后,UC_A的layout_updated事件将改变UC_C的可见性。
我这样做,在全局变量中做一些东西来验证是否使其可见和折叠,
另一种方法是使用mvvm方法
<Border Background="Red" Visibility="{Binding HasChanges, Converter={StaticResource visibilityConverter}, FallbackValue=Collapsed}">
你需要在你的资源中添加
<local:BooleanToVisibilityConverter x:Key="visibilityConverter" OnTrue="Visible" OnFalse="Collapsed" />
您可以有一个全局对象,您可以在控件的构造函数之后设置该对象
InitializeComponent ();DataContext = new GlobalObjectKnownAsViewModel ();//是绑定的来源
这种方法将是一个很好的开始,然后您可以考虑使用PRISM/mvvm light来获得它们为mvvm工作提供的其他行为和基础设施。