【问题标题】:Listbox Itemsource binding not working列表框项目源绑定不起作用
【发布时间】:2015-10-30 16:51:54
【问题描述】:

我正在尝试将我的列表绑定到列表框。列表框绑定正在工作,但我无法将属性绑定到项目模板。

这是我的课

public class handle{
        public string smurfName;
        internal Process process;

        public handle(Process _pro, string _smuf)
        {
            process = _pro;
            smurfName = _smuf;
        }
    }

这是我的窗口构造函数。

public static ObservableCollection<handle> smurfList = new ObservableCollection<handle>();
    public GameMask()
        {
            InitializeComponent();
            runningSmurfs.ItemsSource = smurfList;

            handle newSmurf = new handle(null, "THISNAME");
            smurfList.Add(newSmurf);
        }

这是我的 xaml

<ListBox HorizontalAlignment="Left" Height="200" Margin="3,41,0,0" VerticalAlignment="Top" Width="113" Name="runningSmurfs">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=smurfName}"></TextBlock>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

不幸的是,我在列表中看不到“THISNAME”,但如果我将 Texblock Binding 更改为文本,它就可以正常工作。

感谢您的帮助。

【问题讨论】:

  • Unfortunetely I can't see "text" on the list是什么意思
  • 修正输入错误

标签: c# wpf listbox


【解决方案1】:

您至少需要一个属性,这样您的绑定才能工作。 smurfName 应该是一个属性,如果你也实现 INotifyPropertyChanged 会更好。

【讨论】:

  • 但是它已经是类Handle定义的属性,在我的情况下不需要INotifyPropertyChanged,因为我只会添加和删除
  • 公共字符串 smurfName;不是属性。你需要一个获取和设置
【解决方案2】:

在你的情况下,我认为你不需要实现 INotifyPropertyChanged,但你不能绑定到你试图做的字段

试试这个:

public string SmurfName { get; set; }

并在 xaml 中更改与 SmurfName 的绑定

【讨论】:

    【解决方案3】:

    在您的句柄类中添加一个 getter 和 setter 到您的 smurfName 属性:

    public string smurfName { get; set; }
    

    【讨论】:

      猜你喜欢
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 2013-02-23
      • 2014-01-13
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      相关资源
      最近更新 更多