自定义控件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>
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性