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
 }