绑定不适用于继承的属性

时间:2013-06-05 08:19:30

标签: c# wpf xaml binding

我在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”字段中我什么都没有...

2 个答案:

答案 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,所以它没有这个限制。)