yinyuessh

导航

自定义控件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>

posted on 2024-04-17 13:25  音乐随生活  阅读(41)  评论(0编辑  收藏  举报