代码之家  ›  专栏  ›  技术社区  ›  Donotalo

CommandParameter的绑定SelectedIndex正在返回最后一个选择,或-1

  •  0
  • Donotalo  · 技术社区  · 6 年前

    ListView 具体如下:

    <ListView DockPanel.Dock="Top" Name="ListViewMain" ItemsSource="{Binding Items}">
    
    ... GridView in ListView.View ...
    
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="SelectionChanged">
                <i:InvokeCommandAction Command="{Binding OnSelectionChangedCommand}"
                                       CommandParameter="{Binding SelectedIndex, 
                                           ElementName=ListViewMain}" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </ListView>
    

    列表视图 OnSelectionChangedCommand 用正确的 SelectedIndex

    但当我改变的时候 程序如下:

    ListViewMain.SelectedIndex = 0;
    

    我得到-1英寸 OnSelectionChanged命令 . 我怎样才能正确呢 不考虑选择更改方法?

    更新

    答案在 WPF Listview SelectionChanged event 不要解释什么时候会发生什么 选定索引 是以编程方式设置的,如何定义绑定的视图模型的属性呢 选定索引

    1 回复  |  直到 6 年前
        1
  •  0
  •   Donotalo    6 年前

    我终于有办法了。这个 ListView 应该绑定 SelectedIndex

    <ListView DockPanel.Dock="Top" Name="ListViewMain" ItemsSource="{Binding Items}" 
              SelectedIndex="{Binding SelectedIndex}">
    

    不应该触发 SelectionChanged 事件。

    ListView.DataContext.SelectedIndex (视图模型的 选定索引 )属性应调用 选择已更改 经办人:

    public int SelectedIndex
    {
        get => _selected_index;
        set
        {
            SetProperty(ref _selected_index, value);
            OnSelectionChangedCommand.Execute(_selected_index);
        }
    }