首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >XAML项控件可见性

XAML项控件可见性
EN

Stack Overflow用户
提问于 2010-03-18 08:07:20
回答 2查看 2.1K关注 0票数 0

我的XAML代码中有一个ItemsControl。当一些触发器发生时,我想折叠完整的itemsControl,所以所有的元素。

代码语言:javascript
复制
                        <ItemsControl Name="VideoViewControl"  ItemsSource="{Binding Videos}">
                            <ItemsControl.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <WrapPanel ItemHeight="120" ItemWidth="160" Name="wrapPanel1"/>
                                </ItemsPanelTemplate>
                            </ItemsControl.ItemsPanel>
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <views:VideoInMenuView />
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ItemsControl>

触发器:

代码语言:javascript
复制
     <DataTrigger Value="videos" Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}, AncestorLevel=1}, Path=DataContext.VideosEnable}">
                    <Setter Property="ScrollViewer.Visibility" Value="Visible" TargetName="test1" />
                    <Setter Property="ScrollViewer.Visibility" Value="Collapsed" TargetName="test2" />
<Setter Property="WrapPanel.Visibility" Value="Collapsed" TargetName="wrapPanel1" />
                </DataTrigger>

当我添加最后一个setter时,程序崩溃了。没有这最后一个设置器,它工作得很好,但没有可见性变化....

这段代码有什么问题?使用触发器折叠ItemsControl的所有元素的写入方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2010-03-18 08:17:58

如果您想隐藏整个ItemsControl,那么只需隐藏ItemsControl本身,而不是其内部组件(ScrollViewer和WrapPanel):

代码语言:javascript
复制
<ItemsControl.Style>
    <Style TargetType="ItemsControl">
        <Style.Triggers>
            <DataTrigger ...>
                <Setter Property="Visibility" Value="Collapsed" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</ItemsControl.Style>

这将简单地将ItemsControl本身的可见性设置为折叠,这听起来就是您想要的。

票数 0
EN

Stack Overflow用户

发布于 2010-03-18 23:35:54

我找到了一个解决方案:

我将这个添加到了itemscontrol的项目中:

代码语言:javascript
复制
Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, 
             AncestorType={x:Type ItemsControl}}, Path=Visibility, Mode=TwoWay}"

在WPF hittest算法中,我检查了可见性属性是否已折叠。

这不是一个很好的解决方案,但它对我很有效……

非常奇怪的是,如果您将itemscontrol的visibility属性设置为collapsed,则项的visibility属性是可见的……虫子?

同样奇怪的是: hittest可以找到折叠的物体...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2466797

复制
相关文章

相似问题

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