我有一個綁定應該在多ViewModels中使用的公共屬性的問題。如何在多ViewModels中綁定公共屬性?
在我的第一個MainViewModel中,我連接到返回人員列表的數據庫。
private async void Connected()
{
try
{
base.Peoples = await DatabaseConnection.GetAllPersonsCommandAsync();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
在第二視圖我想顯示這些數據,通過其綁定到人民:
<ListView Width="200"
Margin="0 20 0 0"
HorizontalAlignment="Left"
ItemsSource="{Binding Peoples}"
cm:Message.Attach="[Event SelectionChanged] = [Action Peoples_SelectionChanged($source)];">
我結合Peoples
我ViewModelBase
:
private List<Person> _peoples;
public List<Person> Peoples
{
get => _peoples;
set => OnPropertyChanged(ref _peoples, value);
}
我想在由ViewModelBase(如MainViewModel)繼承的其他ViewModel中使用此列表Peoples
。
我希望這個問題對你來說是可以理解的。
問候
==== 更新。
這是我的OnPropertyChanged方法:
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged<T>(ref T property, T value, [CallerMemberName]string propertyName = "")
{
property = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
===== 第二次更新
我測試的東西,當我創造了新的人是這樣的:
private ObservableCollection<Person> _peoples = new ObservableCollection<Person>{
new Person("aa", "aa", 1, 1)
};
public ObservableCollection<Person> Peoples
{
get => _peoples;
set => OnPropertyChanged(ref _peoples, value);
}
我可以看到他們。任何suutions?
哪裏是你的問題?什麼不按預期工作?你試過什麼了? –
它不工作。我從'DatabaseConnection.GetAllPersonsCommandAsync();'獲取數據,但在我的視圖中沒有任何更改。 – striker
向我們展示OnPropertChanged()方法中的代碼。它實際上引發了PropertyChanged事件嗎? –