我有一个小(我希望)问题。我有一个 wpf 项目,我使用 MVVM,但我需要设置文本框的“SelectedText”属性。“selectedText”不是依赖属性,所以我不能使用绑定......我该如何解决这个问题?
问问题
1865 次
1 回答
10
如果您只需要从 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}" />
于 2013-06-20T13:29:39.970 回答