我正在开发一个WPF项目。我刚刚创建了一个依赖属性。此依赖项属性旨在使RichTextBox.Selection.Text
属性 bindeable 。
但我不能做的是使用相同的DP获取并将数据设置为RichTextBox.Selection.Text
。
如果我仅希望使用绑定从RichTextBox.Selection.Text
获取数据,则使用此代码:
public class MyRichTextBox: RichTextBox
{
public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
"Text",
typeof(string),
typeof(MyRichTextBox),
new PropertyMetadata(
TextPropertyCallback));
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
public MyRichTextBox()
{
this.TextChanged += new TextChangedEventHandler(MyRichTextBox_TextChanged);
}
void MyRichTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
Text = this.Selection.Text;
}
它完美无缺,但是使用此代码我无法从ViewModel类发送任何数据。
因此,如果我 ONLY 想要从我的ViewModel将数据设置为RichTextBox.Selection.Text
属性,我使用了以下代码:
public class MyRichTextBox: RichTextBox
{
public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
"Text",
typeof(string),
typeof(MyRichTextBox),
new PropertyMetadata(
TextPropertyCallback));
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
private static void TextPropertyCallback(DependencyObject controlInstance, DependencyPropertyChangedEventArgs args)
{
MyRichTextBox instance = (MyRichTextBox)controlInstance;
instance.Selection.Text = (String)args.NewValue;
}
所以,如果我希望能够使用相同的依赖属性来获取和设置数据,我该怎么办?
希望有人可以帮助我,提前告诉你
答案 0 :(得分:1)
您没有将输入控件的文本绑定到VM的属性,而是将附加属性绑定到它,并且在附加属性的值中更改了您设置输入控件的文本。
换句话说 - 没有任何东西可以监视输入控件文本的更改。
编辑:
你还在做:
instance.Selection.Text = (String)args.NewValue;
但是,instance.Selection.Text
没有变更通知。