如何在所有xaml页面中隐藏/启用UserControl?

时间:2014-08-18 11:25:29

标签: wpf xaml user-controls

我有一个用户控件。 UserControl具有一些功能。我在公共资源目录文件中调用了此usercontrol。我在所有页面中继承此资源目录页面。这使我的用户可以控制所有页面。我想要的是,我希望这个usercontrol用于我可以设置的某个特定页面。这是我的代码。

资源目录文件:

 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:l="clr-namespace:UserControls">                   

<!-- Navigation AppBar -->

     <l:NavigationAppBarUserControl 
        Grid.Row="1" Grid.Column="0" Width="100"
        HorizontalAlignment="Left" Visibility="Visible" />

</ResourceDictionary>

Window1.xaml:

<src:WindowBase x:Class=""  
      xmlns:src="clr-namespace:ProjectOne"              
      Title="Window1">

   <Grid>
         //some functions...
   </Grid>
</src:WindowBase>

这将启用我的用户控件。但是这个页面,我想要隐藏我的用户控件。但是没有删除(src:WindowBase)..我怎么能在这里隐藏UserControl?任何帮助都会得到满足。提前谢谢..

1 个答案:

答案 0 :(得分:1)

在WindowBase类中创建一个Visibility类型的属性,并将UserControl的Visisbility绑定到它。

  

WindowBase

public class WindowBase : Window
{
    public WindowBase(Visibility ucVisibility)
    {
        UCVisibility = ucVisibility;
    }

    public WindowBase() : this(Visibility.Visible) { }

    public Visibility UCVisibility { get; set; }
    //other stuff
}
  

UC绑定

        <l:NavigationAppBarUserControl 
    Grid.Row="1" Grid.Column="0" Width="100"
    HorizontalAlignment="Left" 
        Visibility="{Binding UCVisibility, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" />
  

现在你不希望它在基础构造函数中显示发送Visibility.Collapsed。

public partial class Window3 : WindowBase
{
    public Window3():base(Visibility.Collapsed)
    {
        InitializeComponent();
    }
}

我希望这会有所帮助。