0

我在 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”字段我什么也没得到......

4

2 回答 2

1

它应该是属性(带有 getter 和 setter),而不是字段。因为您应该通知 UI 属性的值已更改(并且您应该实现 INotifyPropertyChanged 接口)

代码看起来像 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;

您可以在此博客文章中看到完整代码(适用于 C# 语言的 4 和 5 版本)http://jesseliberty.com/2012/06/28/c-5making-inotifypropertychanged-easier/

(请注意,C# 5 需要 .Net 4.5,因此您的应用程序将无法在 WinXP 上运行。C# 4 需要 .Net4.0,因此没有此限制。)

于 2013-06-05T08:36:13.743 回答
1

你不能绑定到一个字段;你需要创建Id一个属性。

将您的字段替换为public string Id { get; set; }

于 2013-06-05T08:22:25.413 回答