我在ComboBox中使用绑定时遇到问题。
<ComboBox
Margin="2"
x:Name="itemSelector"
SelectionChanged="itemSelector_SelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Id}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
我的对象是public class MyButton : MyElement
,Id属性在MyElement类中设置。
当然,Id是公共属性:public string Id;
。
当我尝试访问MyButton类中的属性时,它可以工作,但是在“Id”字段中我什么都没有...
答案 0 :(得分:1)
你不能绑定到一个字段;你需要改为Id
一个属性。
用public string Id { get; set; }
答案 1 :(得分:1)
它应该是属性(使用getter和setter),而不是字段。因为您应该通知UI该属性的值已更改(并且您应该实现INotifyPropertyChanged接口)
代码shold看起来像C#5
public string Id
{
get { return _id; }
set { SetProperty(ref _id, value); }
}
private string _id;
或C#4
public string Id
{
get { return _id; }
set
{
_id = value;
RaisePropertyChanged(() => Id);
}
}
private DateTime _id;
您可以看到的完整代码,例如在这篇博客文章中(包括4#和5版本的C#语言)http://jesseliberty.com/2012/06/28/c-5making-inotifypropertychanged-easier/
(请注意,C#5需要.Net 4.5,因此您的应用程序不能在WinXP上运行.C#4需要.Net4.0,所以它没有这个限制。)