2010-06-04 45 views
0

到我已經創建日期和控制,當他們位於同一目錄中或同一XAML文檔中的其他對象之間建立綁定和依賴。如何設置綁定用戶控件在不同的目錄

現在我已經創建了位於我的項目目錄中稱爲「控件」此控件,則主XAML文檔中使用標籤

我的問題是我怎麼加載的用戶控件去設置用戶控件中的對象與主xaml文檔中的對象之間的綁定。

這方面的一個例子是,如果我有我的用戶控件中,主XAML頁面我有一個複選框中的一個文本框。當點擊複選框時,我想將文本框的可見性設置爲摺疊。

正如我所說的,我已經能夠做到這一點,當兩個對象都是在同一個文檔內,但現在由於文本字段放置在用戶控件內部的一個目錄中,我不確定如何引用它。

謝謝

回答

0

向您的UserControl添加一個DependencyProperty。在主窗口的XAML中,綁定到DependencyProperty。在你的用戶控件的XAML,綁定使用RelativeSource FindAncestor相同的DependencyProperty。

例如,如果您的用戶控件被稱爲「的MyUserControl」,有一個DependencyProperty「ShowDetails」,在主XAML的結合將是:

<Window ...> 
    ... 
    <local:MyUserControl ShowDetails="{Binding IsChecked,ElementName=checkBox}" /> 
    ... 
    <CheckBox x:Name=checkBox Content="Show Details" /> 
    ... 
</Window> 

,並在用戶控件的XAML這將是:

<UserControl ...> 
    ... 
    <Textbox ... 
    Visibility="{Binding ShowDetails, 
     RelativeSource={RelativeSource FindAncestor,local:MyUserControl,1}, 
     Converter={StaticResource BoolToVisibiltyConverter}" /> 
    ... 
</UserControl> 

更重要的是,使用MVVM模式。在這種情況下,你會放在你的視圖模型的的DependencyProperty這將是throught兩個主窗口的DataContext的,你的用戶控件訪問。隨着MVVM沒有必要使用FindAncestor或的ElementName,因爲這兩個複選框,並直接在文本框綁定到視圖模型屬性:

<Window ...> 

    <local:MyUserControl /> 
    ... 
    <CheckBox IsChecked="{Binding ShowDetails}" Content="Show Details" /> 

</Window> 

這個用戶控件:

<UserControl> 
    ... 
    <TextBox ... 
    Visibility="{Binding ShowDetails, 
     Converter={StaticResource BoolToVisibiltyConverter}" /> 
    ... 
</UserControl> 
相關問題