gpt4 book ai didi

xaml - 更改 ListView 项的可见性

转载 作者:行者123 更新时间:2023-12-02 20:38:44 24 4
gpt4 key购买 nike

我有另一个关于将可见性绑定(bind)到 ListView 项目的问题并且得到了回答。

我现在遇到的问题是我试图将可见性绑定(bind)到 ListView 项的属性,但它似乎不起作用。

这是我的代码:

<ListView 
ItemsSource="{Binding FooList}"
ItemTemplate="{StaticResource FooTemplate}"
Grid.Row="3">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Padding" Value="0" />
<Setter Property="MinHeight" Value="0" />
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>

和模板:

<DataTemplate x:Key="FooTemplate">
<Grid Background="White" HorizontalAlignment="Stretch">
//template stuff
</Grid>

如果我尝试在模板中设置 Grid 的可见性,它会正确绑定(bind)并且不会显示它不应该显示的 Foo 项目,但容器的空间仍然存在,它只是空白。

如果我尝试在 ItemContainer 中设置可见性绑定(bind):

<Setter Property="Visibility" Value="{Binding FooVisibility}" />

然后永远不会调用属性 FooVisibility。

假设我有一个返回 Visibility 枚举的适当属性,隐藏特定 ListView 项目的适当方法是什么?

最佳答案

UWP 不支持 Style Setters 中的绑定(bind):https://learn.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.Setter#Windows_UI_Xaml_Setter_Value

您可以在 ItemTemplate 中绑定(bind)根元素的 Visibility 属性:

<DataTemplate x:Key="FooTemplate">
<Grid Background="White" HorizontalAlignment="Stretch"
Visibility="{Binding FooVisibility}">

</Grid>
</DataTemplate>

或者您可以编写一些代码,在根元素的 DataContextChanged 事件的事件处理程序中以编程方式设置绑定(bind),如下所示:https://blog.magnusmontin.net/2016/02/28/disabling-selection-of-some-items-in-a-uwp-listview/

private void Grid_DataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args)
{
Grid grid = sender as Grid;
ListViewItem lvi = listView.ContainerFromItem(grid.DataContext) as ListViewItem;
if (lvi != null)
{
lvi.SetBinding(ListViewItem.VisibilityProperty, new Binding() { Path = new PropertyPath("FooVisibility"), Source = grid.DataContext });
}
}

或者,您可以创建自己的绑定(bind)助手类:

UWP Binding in Style Setter not working

Universal Apps: How to bind a property of a ListViewItem (container) to the actual item (View Model)?

关于xaml - 更改 ListView 项的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46453635/

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