2014-03-29 66 views
0

我的代碼隱藏在用戶控件

public Button button { get; set; } 

我在另一個頁面

CrudPage

<UC:MyUC x:Name="objectForm" /> 
使用此用戶控件有一個用戶控件的一個按鈕

<Button Content="Button" x:Name="button"/> 

更改可視性

是可能的從CrudPage的代碼隱藏中可見地修改此按鈕?

+0

暴露在你的用戶控件的屬性,將設置你的按鈕 –

+0

的警戒/解除警戒能見度我很小白......怎麼樣? – ArghArgh

+0

看看你從dkozi得到的答案 –

回答

1

創建DenedencyPropertyUserControl

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

<Button 
    Visibility="{Binding ElementName=userControl, Path=ButtonVisibility}" 
    Content="Button" 
    x:Name="button"/> 

假設UserControlx:Name="userControl"

<UserControl ... x:Name="userControl"> 

,你應該能夠控制來自外部的Button像這樣的:

<local:MyUserControl ButtonVisibility="Collapsed"/> 
+0

DependencyProperty.Register需要4個參數...我添加新的PropertyMetadata(「」)...但它不起作用,我從按鈕中刪除了elementName, – ArghArgh

+0

對不起,在WPF中有3個參數的重載,在你的情況'null'作爲第四個參數應該沒問題。我已經更新了我的答案 – dkozl

+0

取決於你有多少個按鈕。 'Button.Click'已經是冒泡事件,所以你可以直接在'UserControl'上捕獲它,而不需要額外的代碼' dkozl