0
我有一個綁定到ObservableCollection的控件項目組。WPF - 綁定失敗到用戶控件依賴項屬性
<DataTemplate x:Key="SampleTemplate">
<TextBlock Text="{Binding FirstName}"/>
</DataTemplate>
我創建了其內部TextBlock的用戶控件:如果它被設置爲一個TextBlock作爲每個項目的ItemTemplate中工作。我想將上面的「名字」傳遞給用戶控件。我想通過在用戶控件的代碼定義一個DependencyProperty身後,要做到這一點:
public static DependencyProperty SomeValueProperty = DependencyProperty.Register(
"SomeValue",
typeof(Object),
typeof(SampleControl));
public string SomeValue
{
get
{
return (string)GetValue(SomeValueProperty);
}
set
{
(this.DataContext as UserControlViewModel).Name = value;
SetValue(SomeValueProperty, value);
}
,並在主窗口的ItemTemplate,我把它改爲:
<DataTemplate x:Key="SampleTemplate">
<local:SampleControl SomeValue="{Binding FirstName}"/>
</DataTemplate>
但是,這是行不通的。我不確定爲什麼這個綁定失敗時,相同的綁定適用於MainWindow內的TextBlock。我在這裏做錯了什麼?
這裏需要注意的重要一點是, SomeValue'只是一個簡單的方法來設置依賴項屬性的值(它有其他目的,但在這裏並不相關)。依賴項屬性系統仍然可以在不通過設置器的情況下更改屬性的值。如果你想對每一個變化執行一些操作,就像賈斯汀建議的那樣註冊一個屬性更改處理程序。 –
謝謝賈斯汀和蒂姆。我確實看到了錯誤,並且我已經糾正了錯誤,並且它在我傳遞一個常量值時正常工作:「123」 <本地:SampleControl someValue中= 「{綁定源= {StaticResource的fixedValue}}」/> DataTemplate中> 但它不與正常工作的結合雖然: DataTemplate> 我不斷收到錯誤:BindingExpression path error:'FirstName'property not found on'object' –
Padmaja