我遇到问题,我有一个现有的模型对象,我无法扩展。实际问题有点复杂,所以我尝试将其分解。使用DependencyProperty在TextBox上添加IsDirty-Flag
我想用依赖项属性扩展TextBox
以指示文本已更改。所以,我想出了以下解决方案:
public class MyTextField : TextBox
{
public MyTextField()
{
this.TextChanged += new TextChangedEventHandler(MyTextField_TextChanged);
}
private void MyTextField_TextChanged(object sender, TextChangedEventArgs e)
{
IsDirty = true;
}
public static DependencyProperty IsDirtyProperty = DependencyProperty.Register(
"IsDirtyProperty",
typeof(bool),
typeof(MyTextField),
new PropertyMetadata(false));
public bool IsDirty
{
get { return (bool)GetValue(IsDirtyProperty); }
set { SetValue(IsDirtyProperty, value); }
}
}
XAML:
<my:MiaTextField Text="{Binding Barcode}" IsDirty="{Binding IsDirty}"/>
所以,如果我更改TextBox
文本中,isDirty
物业应更改为true
。 但我得到了System.Windows.Markup.XamlParseException
:绑定只能设置为“DependencyObject”的“DependencyProperty”。
。不幸的是绑定不起作用。在GridView中,我有我的 'Textbox'绑定了一个'ObservableCollection'。 'IsDirtyProperty' -DP设置正确。 – Marcel
@Marcel:你试过我的建议吗? – mm8
@ mm8是的但绑定不起作用 – Marcel