自定義控件Binding依賴屬性失敗
自定義控件Binding依賴屬性失敗
場景
編寫一個自定義控件,控件中定義一個依賴屬性向外暴露允許調用方進行綁定,在控件UI中包含了一個TextBlock控件,TextBlock控件的Text屬性綁定到自定義控件的依賴屬性上。
實現功能
調用方定義的自定義控件依賴屬性綁定源發生改變,控件UI中的TextBlock控件的Text屬性值也發生改變。
代碼
- Xaml
<TextBlock Text="{Binding TotalCount}" />
- C#
public int TotalCount
{
get { return (int)GetValue(TotalCountProperty); }
set { SetValue(TotalCountProperty, value); }
}
public static readonly DependencyProperty TotalCountProperty =
DependencyProperty.Register("TotalCount", typeof(int), typeof(PagingControl), new FrameworkPropertyMetadata(15, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, TotalCountChangedCallback));
問題
控件UI中的TextBlock控件的Text屬性值沒有發生改變。
原因
控件UI中的TextBlock控件的Text屬性值沒有發生改變,因為TextBlock控件的Text屬性值沒有綁定到自定義控件的依賴屬性上。你并沒有給它設置DataContext,導致TextProperty這個依賴屬性并沒有找到源
解決方案
在自定義控件中,將TextBlock控件或其容器控件的DataContext設置為自定義控件的實例。
<UserControl x:Name="pagingControl">
<TextBlock DataContext="{Binding ElementName=pagingControl}" Text="{Binding TotalCount}" />
</UserControl>
浙公網安備 33010602011771號