让我们上课:
public partial class MyControl: UserControl{
private ObservableCollection<string> names =
new ObservableCollection<string>();
...
}
然后在XAML中找到类UserControl
的XAML中相同的MyControl
:
<UserControl x:Class="MyProject.MyControl" xmlns="..." xmlns:x="...">
<ItemsControl ItemsSource="{Binding ???????}" />
</UserControl>
是否可以将???????
替换为将ItemsSource
绑定到代码后面的names
字段的内容?如果有方法,这样做的正确方法是什么?如果names
无法成为依赖属性而不仅仅是字段?
答案 0 :(得分:3)
您只需要为名称
创建公共getter属性public IEnumerable<string> Names
{
get{return names;}
}
它不需要是依赖属性。
然后你的xaml可以
<ItemsControl ItemsSource="{Binding Names}" />
编辑: 重新阅读你的标题。如果你想保持名称私有,你必须在后面的代码中进行绑定。
Binding b = new Binding();
b.Source = names;
itemsControl.SetBinding(ItemsControl.ItemsSourceProperty, b);