这是我的代码:
public static readonly DependencyPropertyKey ItemsSourceKey =
DependencyProperty.RegisterReadOnly("ItemsSource", typeof(List<string>), typeof(MyTextBox), null);
public static readonly DependencyProperty ItemsSourceProperty = ItemsSourceKey.DependencyProperty;
public List<string> ItemsSource
{
get { return (List<string>)GetValue(ItemsSourceProperty); }
}
我有两个问题:
1。)由于我在MSDN上建议使用了DependencyPropertyKey,我在XAML中看不到ItemsSource。
2。)用户应该能够绑定到List,获取MyTextBox控件的ItemsSource中的当前字符串。在MyTextBox内部,我想向ItemsSource添加字符串,但是我无法创建List的实例并将其分配给ItemsSource,因为它是ReadOnly ...
我该如何解决?我想要一个可绑定的只读属性,我可以在内部设置数据。也许你问为什么我不使用.Text属性绑定那里。那么用户输入数据,我改变它并希望在列表中返回它...
答案 0 :(得分:1)
通过使用两个单独的属性在ItemsControl中解决此问题:ItemsSource for Binding,Items作为用于实际显示数据的只读集合对象。由于ItemsControl已经为您处理这些集合并执行所有必要的更新,因此如果您需要此行为,则应从ItemsControl派生。如果您需要ItemsControl和TextBox的行为,您可以创建一个控件,它是两者的复合,并将属性传递给内部控件,或者创建两个相互协作的相关派生控件(一个ItemsControl,一个TextBox)。
答案 1 :(得分:0)
我该如何解决?我想要一个 bindable readonly我所属的属性 可以在内部设置数据。也许你问 为什么我不使用.Text属性 绑在那里。那么用户输入数据, 我改变它并想要归还它 在列表中更改...
如果您只是需要修改数据,可以使用转换器。