用户控制的可见性

时间:2011-11-02 16:36:40

标签: c# silverlight silverlight-4.0 visibility

在我的应用程序中有一个侧边栏,它持有这两个组件:

        <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(管理员登录表单) 和
  • 用户控制C(管理导航菜单)

UC_B默认是可见的,单击UC_B中的按钮调用UC_A的UC_C将可见性更改为可见?

2 个答案:

答案 0 :(得分:1)

最后这个问题正在解决......我这样做,在全局变量中创建一些东西来验证是否可以显示和折叠,然后给侧栏(layout_updated)提供一个事件处理程序。当我修改UC_B的可见性时,UC_A将受到影响,触发器将被调用。最后,UC_A的layout_updated事件将改变UC_C的可见性变得可见。

答案 1 :(得分:1)

  

我这样做,在全局变量中创建一些东西来验证是否可以显示和崩溃,

另一种方法是使用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(); //是Binding的来源

这种方法将是一个良好的开端,之后您可以查看可能使用PRISM / mvvm灯来获取为mvvm工作提供的其他行为和基础设施。