【问题标题】:Prevent change of selection in ListView防止更改 ListView 中的选择
【发布时间】:2015-02-28 18:29:20
【问题描述】:

我有一个列表视图。我想防止更改选择。

<ListView SelectionMode="Single" MinHeight="400" ItemsSource="{Binding Partners}" SelectedItem="{Binding SelectedPartner, Mode=TwoWay}">
    <ListView.View>
        <GridView>
             <Header="ID" DisplayMemberBinding="{Binding partnerId}"/>             
        </GridView>
    </ListView.View>
</ListView>

我在 ViewModel 中有:

public Partner SelectedPartner
{
    get { return _selectedPartner; }
    set
    {
        if (_selectedPartner == null) //when it isn't selected I select to new value
        {
            _selectedPartner = value;
            NotifyPropertyChanged("SelectedPartner");
        }
        else // when it is selected I don't change value and I want to do not change highlighting in view
        {
            NotifyPropertyChanged("SelectedPartner");
        }
    }
}

它被正确调用,但新/旧选择的突出显示仍然改变。

【问题讨论】:

    标签: c# xaml listview selection


    【解决方案1】:

    我认为最简单的解决方案是在用户从ListView 中选择项目后将属性IsEnabled 设置为false

    <ListView SelectionMode="Single" MinHeight="400" ItemsSource="{Binding Partners}" 
              SelectedItem="{Binding SelectedPartner, Mode=TwoWay}">
        <ListView.Style>
            <Style TargetType="ListView">
                <Setter Property="IsEnabled" Value="False"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding SelectedPartner}" Value="{x:Null}">
                        <Setter Property="IsEnabled" Value="True"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ListView.Style>
        <ListView.View>
           ...
        </ListView.View>
    </ListView>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2018-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多