专栏首页明年我18(转)WPF Custom Control Dependency Property Gotcha

(转)WPF Custom Control Dependency Property Gotcha

原文地址:http://geekswithblogs.net/thibbard/archive/2008/04/22/wpf-custom-control-dependency-property-gotcha.aspx

Let's say you have a custom WPF control called SearchTextBox. It has a textbox and a button labeled "search". Simple enough, you reuse it in your application when you want to provide search.

Then one day, you decide you need this control needs to be bindable. So you expose a public property Text and map it to textSearch just like you would in WinForms.

Well, that doesn't work, so you google around and stumble upon Dependency Properties and learn how to create your own (VS snippet shortcut propdb) and create a Text DP.

Now you spend 30 minutes trying to map your Text DP to your textSearch.Text until you finally figure out that your DP snippet lead you astray and there is one more step that didn't get included in the shortcut. In the UIPropertyMetaData, you need to specify a function to call when the property changes - so you can set textSearch.Text.

The function looks like this:

static void textChangedCallBack(DependencyObject property, 
   DependencyPropertyChangedEventArgs args)
{
   SearchTextBox searchTextBox = (SearchTextBox)property;
   searchTextBox.textSearch.Text= (string)args.NewValue;
}

And the rest of the DP looks like this:

public string Text
{
   get { return (string)GetValue(TextProperty); }
   set { SetValue(TextProperty, value);  }
}

public static readonly DependencyProperty TextProperty =
   DependencyProperty.Register(
   "Text", 
   typeof(string), 
   typeof(SearchTextBox), 
   new UIPropertyMetadata(string.Empty, new PropertyChangedCallback(textChangedCallBack)));

The important part here is what wasn't created by the VS snippet :

new UIPropertyMetadata(string.Empty, new PropertyChangedCallback(textChangedCallBack))

Now you are binding to your custom control and all is good.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • (翻译)LearnVSXNow!-#7 创建我们第一个工具集-完成这个示例

    在上一篇文章中,我们创建了一个例子:我们为一个空的package添加了一个菜单命令,并且在这个过程中了解了Visual Studio Command ...

    明年我18
  • Word中使用代码高亮插件

    一年前我写了一个word2010的代码高亮插件,但当时那个版本有一个问题:在用word发布博客的时候,高亮的代码在博客中的格式乱了。今天有空改了一下这个插件,虽...

    明年我18
  • (翻译)LearnVSXNow!-#1 如何开始VSX开发?

    (译者注:这个系列是翻译inovak在DiveDeeper上的LearnVSXNow系列博文,该系列的目录可以在这里找到,也可以点击这里直接访问DiveDeep...

    明年我18
  • 用数据分析网络暴力有多可怕

    潘老师是在17时发出微博的,但是那时并没有大量的评论出现,那个小时一共有1237条评论。

    数据森麟
  • Baidu大数据洞察:“数”说年轻女性的自我世界

    ? 百度大数据带您透视小世界里的大女人精神。小世界指的是新一代年轻女性的自我世界,寓意每一个小小的我都是一个世界;大女人寓意新一代年轻女性脱离集体意识形态,不...

    小莹莹
  • Google用机器学习把各种鸟叫整合成一张互动图,而且开源了代码

    问耕 编译整理 量子位 出品 | 公众号 QbitAI 你能听出几种鸟叫的声音? 在Google最新公布的一个实验里,三位研究者使用机器学习,把上千种鸟叫的声音...

    量子位
  • SAP QM 物料的周期性检验

    物料的周期性检验指每隔一段时间,将存放在仓库的东西拿出来瞧瞧,看看有没有变质,这个就是周期性检验。 不仅针对库存的物料有周期性的检验,针对设备等也有周期性的检...

    用户5495712
  • Pandas数据结构之DataFrame常见操作

    DataFrame 就像带索引的 Series 字典,提取、设置、删除列的操作与字典类似:

    用户1564362
  • Pandas数据结构之DataFrame常见操作

    DataFrame 就像带索引的 Series 字典,提取、设置、删除列的操作与字典类似:

    1480
  • Pandas数据结构之DataFrame常见操作

    DataFrame 就像带索引的 Series 字典,提取、设置、删除列的操作与字典类似:

    double

扫码关注云+社区

领取腾讯云代金券