wpf mvvm具有非依赖属性?

我有一个小(我希望)的问题.我有一个wpf项目,我使用MVVM,但我需要设置文本框的“SelectedText”属性. “selectedText”不是依赖属性,所以我不能使用绑定…
我怎么解决这个问题?

解决方法

如果您只需要从VM到控件的值赋值,则可以使用这样的AttachedProperty.

public class AttachedProperties
{
    private static DependencyProperty SelectedTextProperty =
        DependencyProperty.Registerattached("SelectedText",typeof(string),typeof(AttachedProperties),new PropertyMetadata(default(string),OnSelectedTextChanged)));

     private static void OnSelectedTextChanged(DependencyObject d,DependencyPropertyChangedEventArgs e)
     {
         var txtBox = d as TextBox;
         if (txtBox == null)
             return;

         txtBox.SelectedText = e.NewValue.ToString();
     }

     public static string GetSelectedText(DependencyObject dp)
     {
         if (dp == null) throw new ArgumentNullException("dp");

         return (string)dp.GetValue(SelectedTextProperty);
     }

     public static void SetSelectedText(DependencyObject dp,object value)
     {
         if (dp == null) throw new ArgumentNullException("dp");

         dp.SetValue(SelectedTextProperty,value);
     }
}

用法

<!-- Pls note,that in the Binding the property 'SelectedText' on the VM is refered -->
<TextBox someNs:AttachedProperties.SelectedText="{Binding SelectedText}" />

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...