C# 更改用户控件中的可见性

C# 更改用户控件中的可见性,c#,user-controls,winrt-xaml,C#,User Controls,Winrt Xaml,我有一个带按钮的用户控件 <Button Content="Button" x:Name="button"/> 我在另一个页面中使用此userControl 积垢 <UC:MyUC x:Name="objectForm" /> 是否可以从积垢页的代码隐藏处修改此按钮的可视性?在用户控件中创建denedencroperty: public static DependencyProperty ButtonVisibilityProperty = Dependency

我有一个带按钮的用户控件

<Button Content="Button" x:Name="button"/>
我在另一个页面中使用此userControl

积垢

 <UC:MyUC x:Name="objectForm" />


是否可以从积垢页的代码隐藏处修改此按钮的可视性?

用户控件中创建
denedencroperty

public static DependencyProperty ButtonVisibilityProperty = DependencyProperty.Register("ButtonVisibility", typeof(Visibility), typeof(MyUserControl), null);

public Visibility ButtonVisibility
{
    get { return (Visibility)GetValue(ButtonVisibilityProperty); }
    set { SetValue(ButtonVisibilityProperty, value); }
}
将其绑定到
按钮。可见性

<Button 
    Visibility="{Binding ElementName=userControl, Path=ButtonVisibility}" 
    Content="Button" 
    x:Name="button"/>
您应该能够从外部控制
按钮的
可见性
,如下所示:

<local:MyUserControl ButtonVisibility="Collapsed"/>


在您的usercontrol上公开一个属性,该属性将设置/取消设置按钮的可见性I'm pretty noob…如何设置?请看从dkoziDependencyProperty获得的答案。Register需要4个参数。。。我添加了新的PropertyMetadata(“”)。。。但是它不起作用,我已经从按钮中删除了elementName,它可以工作。很抱歉,在WPF中有3个参数的重载,在您的例子中,
null
作为第4个参数应该可以。我已经更新了我的答案,这取决于你里面有多少按钮<代码>按钮。单击
已经是冒泡事件,因此您可以直接在
UserControl
上捕获它,而无需附加代码

<UserControl ... x:Name="userControl">
<local:MyUserControl ButtonVisibility="Collapsed"/>