在我的应用程序中有一个侧边栏,它持有这两个组件:
<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>
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"/>
UC_B默认是可见的,单击UC_B中的按钮调用UC_A的UC_C将可见性更改为可见?
答案 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工作提供的其他行为和基础设施。