gpt4 book ai didi

c# - 使特定的 ListView 项目在通用 Windows 平台中不可点击

转载 作者:行者123 更新时间:2023-11-30 13:55:04 25 4
gpt4 key购买 nike

我在 XAML 中使用 ListView 元素:

                <ListView
x:Name="myList"
IsItemClickEnabled="true"
ItemClick="onDrawerItemClick"
SelectionMode="Single"
ScrollViewer.VerticalScrollBarVisibility="Hidden">

<ListView.ItemTemplate>
<DataTemplate>

<Grid
Width="260">
<Grid.ColumnDefinitions>
<ColumnDefinition
Width="44" />
<ColumnDefinition
Width="*" />
</Grid.ColumnDefinitions>

<Image
x:Name="image"
Source="{Binding myIcon}"
Grid.Column="0" />

<TextBlock
Text="{Binding myTxt}"
Grid.Column="1" />

</Grid>

</DataTemplate>
</ListView.ItemTemplate>
</ListView>

然后我像这样使用 Bind 属性填充它:

List<MyObj> listData = a list with title + image uri;
myList.ItemsSource = listData;

我只需要根据列表中 MyObj 的某些值禁用某些项目的点击,而其他项目则需要它。在 Android 中我们为此使用适配器,我应该如何处理它?<​​/p>

最佳答案

首先,您应该在 MyObj 对象中创建一个名为 Disabled 的新 bool 属性。

然后,订阅 myListContainerContentChanging 事件,您可以在其中访问 ListViewItem 及其对应的 Item,在本例中是您的 MyObj。因此,如果 MyObj.Disabledtrue,则使 ListViewItem 不可点击。

private void myList_ContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args)
{
var listViewItem = args.ItemContainer;

if (listViewItem != null)
{
var model = (MyObj)args.Item;

if (model.Disabled)
{
listViewItem.IsHitTestVisible = false;

// OR
//listViewItem.IsEnabled = false;
}
}
}

请记住,如果您希望该项目显示为灰色,您可能需要使用 listViewItem.IsEnabled = false。这是因为默认的 ListViewItem 样式具有 Disabled 状态,可降低其 Opacity;设置 listViewItem.IsHitTestVisible = false 不会以任何方式改变其外观。

关于c# - 使特定的 ListView 项目在通用 Windows 平台中不可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37385152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com