2010-08-20 133 views
0

我創建了包含單個組合框的自定義UserControl。當前在組合框中選擇的值綁定到自定義UserControls依賴項屬性。WPF將屬性綁定到子控件中的依賴項屬性

XAML:

<UserControl> 
    <ComboBox 
     ItemsSource="{Binding AllEntries}" 
     SelectedItem="{Binding SelectedEntry}" /> 
</UserControl> 

代碼後面:

public partial class MyCombobox : UserControl 
{ 
    public static DependencyProperty SelectedEntryProperty = 
     DependencyProperty.Register("SelectedEntry", 
      typeof(ComboboxEntry), 
      typeof(MyCombobox)); 

    public ComboboxEntry SelectedEntry 
    { 
     get { return (ComboboxEntry)GetValue(SelectedEntryProperty); } 
     set { SetValue(SelectedEntryProperty, value); } 
    } 
} 

現在的問題是,另一組分包含該延長框控件。在包含控件中,當用戶在組合框中選擇一個新值時,我想運行一些邏輯。我有點失落,因爲我如何設置鉤子。必須MyCombobox公開自定義事件,該事件是從SelectedEntry依賴項屬性中的PropertyChanged回調觸發的?似乎哈克,但我不能找出另一種方式。

回答

2

爲什麼不只是使用另一個綁定?

<OuterControl> 
    <StackPanel> 
     <local:MyCombobox x:Name="myComboBox"/> 
     <TextBlock Text="{Binding SelectedEntry, ElementName=myComboBox}"/> 
    </StackPanel> 
</OuterControl> 
+0

我正要回來,並刪除的問題(它沒有得到我查了第一個小時內的任何答案)... ...但你說得對,另一個結合是什麼,我試圖做的,但是我在後面的代碼中使用DataContext屬性進行許多醜陋的黑客攻擊,所以我搞砸了綁定。它現在可以正常工作,使用您描述的bind-through-elementname方法。我會接受並留在這裏,一些代表給你,但我懷疑它會幫助別人在這裏絆倒。乾杯! :) – Mizipzor 2010-08-20 12:07:16