我正在使用WPF中的ListView(MAHApps樣式的ListView)。我將ListView綁定到一個可觀察的集合。我將SelectedItem-Property綁定到ViewModel的一個屬性。WPF ListView忽略SelectedItem-change
當我通過GUI選擇ListView中的一個項目時,「SelectedItem」已更改。當我更改ViewModel中的「SelectedItem」時,ListView只會更改,當我將SelectedItem設置爲NULL時。當我設置任何其他(有效!)對象(如ObservableCollection的第一個條目)時,ListView會忽略它。 此外:當我想「選擇」SelectedItem更改(因爲數據未保存),ListView突出顯示新的選定的項目,而不是ViewModel的SelectedItem-Property。
我已經嘗試過改變結合「模式=雙向」 - 不工作,以及(否則的SelectedItem的「NULL」變化是行不通的爲好)
這是代碼從觀點:
<ListView ItemsSource="{Binding Configurations}" SelectedItem="{Binding SelectedUserConfiguration}" SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn Header="User Configuration" DisplayMemberBinding="{Binding ConfigurationName}" Width="200" />
</GridView>
</ListView.View>
</ListView>
我的視圖模型:
public ObservableCollection<UserConfigurationViewModel> Configurations { get; private set; }
private UserConfigurationViewModel _selectedUserConfiguration;
public UserConfigurationViewModel SelectedUserConfiguration
{
get {
return this._selectedUserConfiguration;
}
set
{
if (this._selectedUserConfiguration != null && this._selectedUserConfiguration.WasChanged)
{
if (ask-user)
{
this._selectedUserConfiguration.Reset();
this._selectedUserConfiguration = value;
}
}
else
{
this._selectedUserConfiguration = value;
}
NotifyOfPropertyChange(() => this.SelectedUserConfiguration);
}
}
而且這裏有一個例子 - 這就是所謂的構造函數。試圖執行一個測試按鈕,選擇最後一個,第一和任何項目 - 沒有工作...
if (this.Configurations.Count > 0)
{
this.SelectedUserConfiguration = this.Configurations.First();
}
感謝您的幫助! 霍爾格
我只是猜測,可能的問題是ListView控件的'SelectedItem'屬性的類型是object'和你'SelectedUserConfiguration'屬性的類型'UserConfigurationViewModel'的'? – Dante
你如何解決這個問題? – artos