用户控制的可见性

本文关键字:可见性 控制 用户 | 更新日期: 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工作提供的其他行为和基础设施。