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调用的新属性.DisabledMyObj
然后,订阅您可以访问其相应myList的ContainerContentChanging事件,在这种情况下是您的.因此,如果是,则使其不可点击.ListViewItemItemMyObjMyObj.DisabledtrueListViewItem
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 次 |
| 最近记录: |