gpt4 book ai didi

WPF ListView 忽略 SelectedItem-change

转载 作者:行者123 更新时间:2023-12-04 04:39:33 26 4
gpt4 key购买 nike

我正在使用 WPF 中的 ListView,它绑定(bind)了一个可观察的集合。然后我将 SelectedItem-Property 绑定(bind)到 ViewModel 的一个属性。

  • 当我通过 GUI 在 ListView 中选择一个项目时,“SelectedItem”发生了变化。
  • 当我在 ViewModel 中更改“SelectedItem”时,当我将 SelectedItem 设置为 NULL 时,ListView 只会更改。
  • 当我设置任何其他(有效!)对象(如 ObservableCollection 的第一个条目)时,ListView 会忽略它。

  • 此外:当我想“否决”一个 SelectedItem 更改(因为未保存数据)时,ListView 会突出显示新的选定项,而不是 ViewModel 的 SelectedItem-Property。

    我已经尝试将绑定(bind)更改为 Mode=TwoWay - 不能正常工作(否则对 SelectedItem 的“NULL”更改也不能正常工作)

    这是 View 中的代码:
    <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>

    我的 View 模型:
    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);
    }
    }

    最佳答案

    为了从代码中选择任何集合控件中的选定项,选定项必须是集合中绑定(bind)到 ItemsSource 的实际项。属性(property)。这可以通过 LinQ 轻松实现。如果您的收藏品至少有一个独特的属性:

    SelectedUserConfiguration = Configurations.Where(c => c.UniqueProperty == 
    valueOfItemToSelect).FirstOrDefault();

    如果您的数据类型对象没有唯一属性,您可以简单地添加 int Id为此目的的属性(property)。

    关于WPF ListView 忽略 SelectedItem-change,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19140485/

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