C# 在通用Windows 10中以编程方式突出显示ListView元素
在选择列表元素行为时,我试图实现自己的逻辑。我想按位置以编程方式突出显示一个选项。我找到了一个有效的解决方案:C# 在通用Windows 10中以编程方式突出显示ListView元素,c#,listview,win-universal-app,C#,Listview,Win Universal App,在选择列表元素行为时,我试图实现自己的逻辑。我想按位置以编程方式突出显示一个选项。我找到了一个有效的解决方案: myListView.SelectedIndex=位置 这个方法是“虚拟点击”列表项,我只需要通过编程证明列表项,而不是点击它 我的listView在xaml中的实现: <ListView x:Name="myListView" SelectionChanged="onmyListViewItemClick" SelectionMode="Single"&
myListView.SelectedIndex=位置代码>
这个方法是“虚拟点击”列表项,我只需要通过编程证明列表项,而不是点击它
我的listView在xaml中的实现:
<ListView
x:Name="myListView"
SelectionChanged="onmyListViewItemClick"
SelectionMode="Single">
<ListView.ItemTemplate>
<DataTemplate>
<--here I have 2 textBoxes and one image-->
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
只是为了清理东西:
ItemClick在列表视图中的项目接收到交互且IsItemClickEnabled属性为true时发生。(从ListViewBase继承)
SelectionChanged在当前所选项目更改时发生。(从选择器继承)
因此,在您的情况下,您应该在xaml中使用ItemClick=“onmyListViewItemClick”
,并继续使用myListView.SelectedIndex=position代码>四个您的需求
因此,您的xaml ListView应该是:
<ListView
x:Name="myListView"
IsItemClickEnabled="true"
ItemClick="onmyListViewItemClick"
SelectionMode="Single">
<ListView.ItemTemplate>
<DataTemplate>
<--here I have 2 textBoxes and one image-->
</DataTemplate>
</ListView.ItemTemplate>
要在不触发SelectionChanged
事件的情况下更改突出显示的元素,必须为ListViewItem实现自己的可视状态,并且IsSelected
属性和SelectedIndex
不得更改
要实现选择状态,首先创建一个UserControl
,以便在DataTemplate
中使用。为您的模型创建一个新属性bool IsSelected,在用户控件中,您将声明单元格的VisualState
s,并且每当用户控件的DataContext(您的模型)的IsSelected属性更改时,它将使用VisualStateManager
更改状态。要突出显示selecteditem吗?myListView.SelectedIndex=position->此选项可选择特定项目您可以将要高亮显示的特定ListView项目的可视状态更改为selected。我提到过此方法,但在使用它时会触发onListItemClick
,我只需要改变视觉状态,而不是隐式的selection@VasileDoe为什么要显式避免选择?在普通用户眼中,高亮显示意味着选择。它将触发selectionchanged事件,因为您更改了选择。这不是点击事件
private void onmyListViewItemClick(object sender, ItemClickEventArgs e) {
var selectedOption = (YourObjectElement)e.ClickedItem;
//use your cliked obj data
}