XAML itemscontrol visibility - PullRequest
       0

XAML itemscontrol visibility

0 голосов
/ 18 марта 2010

В моем коде XAML есть ItemsControl. Когда происходит какой-то триггер, я хочу свернуть полный элемент itemsControl, поэтому все элементы.

                        <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>

Триггер:

     <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>

Когда я добавляю последний установщик, программа вылетает. Без этого последнего установщика он работает нормально, но без изменения видимости ....

Что не так с этим кодом? Какой метод записи используется для свертывания всех элементов ItemsControl с помощью триггера?

Ответы [ 2 ]

0 голосов
/ 18 марта 2010

Я нашел решение:

Я добавил это к элементам управления предметов:

Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, 
             AncestorType={x:Type ItemsControl}}, Path=Visibility, Mode=TwoWay}"

В алгоритме хит-теста WPF я проверил, свернуто ли свойство видимости.

Это не очень хорошее решение, но оно сработало для меня ....

Очень странно, что если вы установите свойство видимости элемента управления свернутым, свойство видимости элементов будет видимым ... ошибка?

Также странно: самый хитовый может найти свернутые объекты ...

0 голосов
/ 18 марта 2010

Если вы хотите скрыть весь ItemsControl, просто спрячьте сам ItemsControl, а не его внутренние компоненты (ScrollViewer и WrapPanel):

<ItemsControl.Style>
    <Style TargetType="ItemsControl">
        <Style.Triggers>
            <DataTrigger ...>
                <Setter Property="Visibility" Value="Collapsed" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</ItemsControl.Style>

Это просто установит Visibility в Collapsed на самом ItemsControl, который звучит так, как вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...