如何将属性绑定到WPF中的仅getter CLR属性?
出于某种目的,我想在多行文本框的如何将属性绑定到WPF中的仅getter CLR属性?,wpf,c#-4.0,dependency-properties,Wpf,C# 4.0,Dependency Properties,出于某种目的,我想在多行文本框的LineCount发生更改时引发一个事件 我认为如果我将依赖项属性绑定到TextBox.LineCount 下面是代码示例 XAML <local:MyTextBox Margin="5,65,5,5" x:Name="txtBox" AcceptsReturn="True" AcceptsTab="False" MyProperty="{Binding LineCount, RelativeSource={RelativeS
LineCount
发生更改时引发一个事件
我认为如果我将依赖项属性绑定到
TextBox.LineCount
下面是代码示例
XAML
<local:MyTextBox Margin="5,65,5,5" x:Name="txtBox"
AcceptsReturn="True" AcceptsTab="False"
MyProperty="{Binding LineCount, RelativeSource={RelativeSource Self}}" />
消息框仅在加载表单时显示,而不是在行数更改后显示。
但是如果我将
MyProperty
的绑定从TextBox的LineCount
更改为Text
每次文本更改时都会触发PropertyChangedEvent。
我确信我可以从TextChanged eventhandler触发一些自定义的LineCount changed事件,但我想通过
DependencProperties
来实现这一点,因为我相信这样会更有效。问题是LineCount
不是依赖属性,请参阅。因此,它不支持绑定,也不会提供更改通知
考虑到您正在制作一个自定义控件,您真的需要使用绑定吗?为什么不在内部处理
TextChanged
事件,并手动检测行数何时更改。您不能绑定到任何属性吗?我认为唯一的目标必须是DP。
public class MyTextBox : TextBox
{
public MyTextBox()
{
DataContext = this;
}
public int MyProperty
{
get
{
return (int)this.GetValue(LineCountProperty);
}
set
{
this.SetValue(LineCountProperty, value);
}
}
public static readonly DependencyProperty LineCountProperty =
DependencyProperty.Register(
"MyProperty",
typeof(int),
typeof(TextBox),
new FrameworkPropertyMetadata(
new PropertyChangedCallback(
(dp, args) => { MessageBox.Show(args.NewValue.ToString()); })
));
}