首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隐藏ItemsControl项目

隐藏ItemsControl项目
EN

Stack Overflow用户
提问于 2016-05-13 08:15:47
回答 1查看 741关注 0票数 0

我在另一个ItemsControl中有一个ItemsControl。此ItemsControl包含已售出产品的列表。

我想展示那些销售低于成本(负利润)的项目。但我在折叠这件物品(行)时遇到了问题。

代码语言:javascript
复制
<ItemsControl>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>
                ...
                ...
                ...
                <ItemsControl ItemsSource="{Binding SoldItems}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <Grid>  <!--If I hide the grid, it will create empty space.-->
                                ...
                                ...
                                ...
                                <TextBlock Text="{Binding Profit}"></TextBlock>
                            </Grid>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

如果我试图隐藏网格,它会显示空行。它看上去很奇怪,因为它在那里有空隙。

代码语言:javascript
复制
<Grid Visibility="{Binding Profit, Mode=OneWay, Converter={StaticResource ProfitVisibilityConverter}}">

知道怎么隐藏整排吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-13 11:33:26

代码语言:javascript
复制
<ListView x:Name="MyListView">
    <ListView.ItemTemplate>
        <DataTemplate >
            <Grid Visibility="{Binding visible}"  Tag="{Binding ElementName=MyListView}" Loaded="Grid_Loaded"  >
                <TextBlock Text="{Binding Name}"/>
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
代码语言:javascript
复制
private void Grid_Loaded(object sender, RoutedEventArgs e)
{
    Grid grid = sender as Grid;
    // For items control
    // ContentPresenter item = (ContentPresenter)(grid.Tag as ItemsControl).ContainerFromItem(grid.DataContext);
    ListViewItem item = (ListViewItem)(grid.Tag as ItemsControl).ContainerFromItem(grid.DataContext);
    // Or you can directly access listview
    // ListViewItem item = (ListViewItem)(MyListView as ItemsControl).ContainerFromItem(grid.DataContext);
    if ((grid.DataContext as Test).visible == Visibility.Collapsed)
    {
        if (item != null)
        {
            Binding binding = new Binding();
            binding.Mode = BindingMode.TwoWay;
            binding.Source = (grid.DataContext as your model class)
            binding.Path = new PropertyPath("givevisibilityproperty");

            // Attach the binding to the target.
            item.SetBinding(ListViewItem.VisibilityProperty, binding);

            // (item ).Visibility = Visibility.Collapsed;
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37204763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档