WPF自定义控件中,自定义属性的绑定。

roderickwang 2013-01-19 09:56:53
我想在WPF中做一个自定义控件,其中有一个自定义属性HelpText,在主界面用此控件时,指定HelpText的值,然后自定义控件绑定此值,显示出来。
自定义控件:
public class TextBoxEx : TextBox
{
static TextBoxEx()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(TextBoxEx), new FrameworkPropertyMetadata(typeof(TextBoxEx)));
HelpTextProperty = DependencyProperty.Register("HelpText", typeof(string), typeof(TextBoxEx),
new FrameworkPropertyMetadata("请您输入..", new PropertyChangedCallback(OnHelpTextChanged)));
}
public static DependencyProperty HelpTextProperty;
public string HelpText
{
get { return (string)GetValue(HelpTextProperty); }
set { SetValue(HelpTextProperty, value); }
}
private static void OnHelpTextChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{

}
}

下面是自定义控件的xaml代码,我用了好几种,怎么也绑定不了从使用控件的主界面发回来的HelpText属性:
1.<TextBlock Text="{Binding Path=HelpText}"/>
2.<TextBlock Text="{TemplateBinding HelpText}"/>
3. <TextBlock Text="{Binding Path=HelpText, RelativeSource={RelativeSource TemplatedParent}}"/>
经测试如果把上面绑定化为固定值,正常运行,隐藏代码中回调函数可以证明HelpText传参无错误。
请问如何绑定??
...全文
1928 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanq1314 2013-05-06
  • 打赏
  • 举报
回复
<TextBlock Text="{Binding Path=HelpText,Mode=TwoWay}"/> 这样试试
roderickwang 2013-01-19
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
“从使用控件的主界面发回来的HelpText属性” 看不懂。你需要解释这个小“界面”的架构。
很简单的,主界面就是:
<control:TextBoxEx   Height="25" Width="100"  Name="tbe_test" HelpText="123" />
  • 打赏
  • 举报
回复
“从使用控件的主界面发回来的HelpText属性” 看不懂。你需要解释这个小“界面”的架构。
roderickwang 2013-01-19
  • 打赏
  • 举报
回复
引用 楼主 roderickwang 的回复:
我想在WPF中做一个自定义控件,其中有一个自定义属性HelpText,在主界面用此控件时,指定HelpText的值,然后自定义控件绑定此值,显示出来。 自定义控件:C# code?12345678910111213141516171819public class TextBoxEx : TextBox { static TextBoxEx() ……
问题补充,刚才测试知道<TextBlock Text="{Binding Path=HelpText}"/>是因为放在<ControlTemplate.Triggers>里面才无法绑定的,只要放在外面就行,什么原因呢??

17,741

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧