我有一个WPF ListView,我绑定了一个可观察的集合,下面是代码
<ListView Name="WOListView" IsSynchronizedWithCurrentItem="True"
DataContext="{Binding AllItems}"
ItemsSource="{Binding }"
SnapsToDevicePixels="True" Grid.IsSharedSizeScope="True"
customEvents:DoubleClickEvent.HandleDoubleClick="true"
customEvents:DoubleClickEvent.TheCommandToRun="{Binding Path=ItemCommand}"
BorderThickness="0" >
这里我有两个问题
1)不知道为什么,我总是在加载列表时选择一个项目,并且它始终是我绑定的集合的第一个项目。
2)默认情况下,所选项目通常以蓝色显示,但是当我单击列表视图时,而不是取消选择项目。它将所选项目显示为灰色
答案 0 :(得分:2)
For 1):这是由于IsSynchronizedWithCurrentItem =“True”。如果要使用IsSynchronizedWithCurrentItem功能,则可以想要影响CurrentItem。使用以下代码执行此操作...
var dv = CollectionViewSource.GetDefaultView(yourObservableCollection);
dv.MoveCurrentTo( /* here your desired selection */ );
...有关详细信息,请参阅here。
For 2):这是ListView(和其他ListControls)的默认行为。如果列表控件不再具有焦点,则所选项目将显示为灰色。这样做是为了可视化哪个控件具有焦点(以及哪个控件没有)。
如果您想要无论如何更改选择行为,请将以下标记放入ListView
<ListView.Resources>
<Style TargetType="ListViewItem">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red"/>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Green"/>
</Style.Resources>
</Style>
</ListView.Resources>
根据需要更改颜色。但正如我所提到的,默认行为是向用户显示已选择哪个控件,如果您更改此行为,某些用户可能不喜欢...