Vas*_*Doe 3 c# xaml microsoft-metro win-universal-app uwp
我ListView
在我的XAML中使用了一个元素:
<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>
Run Code Online (Sandbox Code Playgroud)
我使用Bind属性填充它,如下所示:
List<MyObj> listData = a list with title + image uri;
myList.ItemsSource = listData;
Run Code Online (Sandbox Code Playgroud)
我需要禁用一些项目的点击,具体取决于MyObj
我的列表中的某些值,但其他项目要有.在Android中我们使用适配器,我应该如何处理它?
首先,您应该创建一个在对象内部bool
调用的新属性.Disabled
MyObj
然后,订阅您可以访问其相应myList
的ContainerContentChanging
事件,在这种情况下是您的.因此,如果是,则使其不可点击.ListViewItem
Item
MyObj
MyObj.Disabled
true
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
请记住,listViewItem.IsEnabled = false
如果您希望该项目显示为灰色,则可能需要使用.这是因为默认ListViewItem
样式具有禁用状态,减少了它Opacity
; 而设置listViewItem.IsHitTestVisible = false
不会以任何方式改变其外观.
归档时间: |
|
查看次数: |
2701 次 |
最近记录: |