防止在 ListView 中更改选择
Prevent change of selection in ListView
我有一个 ListView。我想防止更改选择。
<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");
}
}
}
调用正确,但 new/old 选择的突出显示仍然更改。
我认为最简单的解决方案是在 ListView
.
的用户 select 项之后将 属性 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>
我有一个 ListView。我想防止更改选择。
<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");
}
}
}
调用正确,但 new/old 选择的突出显示仍然更改。
我认为最简单的解决方案是在 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>