gpt4 book ai didi

c# - 将 View 模型中的 ObservableCollection 绑定(bind)到列表框

转载 作者:行者123 更新时间:2023-12-03 10:55:00 25 4
gpt4 key购买 nike

我对 MVVM 和绑定(bind)非常陌生,我正在努力学习使用它。
我遇到了将 View 模型绑定(bind)到 View 的问题,特别是将可观察集合绑定(bind)到列表框。

这就是我的 View 模型的样子:

namespace MyProject
{
using Model;

public class NetworkViewModel: INotifyPropertyChanged
{

private ObservableCollection<Person> _networkList1 = new ObservableCollection<Person>();
public ObservableCollection<Person> NetworkList1 //Binds with the listbox
{
get { return _networkList1; }
set { _networkList1 = value; RaisePropertyChanged("_networkList1"); }
}

public event PropertyChangedEventHandler PropertyChanged;

private void RaisePropertyChanged(string propertyName)
{
var handler = this.PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}

public NetworkViewModel()
{
_networkList1 = new ObservableCollection<Person>()
{
new Person(){FirstName="John", LastName="Doe"},
new Person(){FirstName="Andy" , LastName="Boo"}
};
}
}

在我看来
namespace MyProject
{
public partial class Networking : Window
{

public Networking()
{
InitializeComponent();

this.DataContext = new NetworkViewModel();

lb1.ItemsSource = _networkList1;
}
}
}

在 XAML 中我有
<ListBox x:Name="lb1" HorizontalAlignment="Left" ItemsSource="{Binding NetworkList1}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock >
<Run Text="{Binding Path=FirstName}"/>
<Run Text="{Binding Path=LastName}"/>
</TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

最佳答案

看来您的 View 模型中可能有错字。

RaisePropertyChanged("_networkList1");

您想为公共(public)属性而不是私有(private)变量引发属性更改通知。
RaisePropertyChanged("NetworkList1");

这可能会阻止您的 View 正确更新。

关于c# - 将 View 模型中的 ObservableCollection 绑定(bind)到列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30313003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com