Могу ли я использовать триггер для переключения между элементами управления - PullRequest
1 голос
/ 26 января 2010

Я хочу иметь возможность "изменить" мой список просмотра в другой элемент управления. Я думал о том, чтобы установить видимость элемента управления скрытой, а при нажатии кнопки изменить видимость. Должен ли я сделать это программно? Или я могу использовать триггер?

Ответы [ 3 ]

2 голосов
/ 26 января 2010

Вы можете использовать триггер, чтобы изменить свойство Template ContentControl, которое обернет элемент управления, который вы хотите изменить. Проверьте это:

Добавить это к ресурсам:

    <ControlTemplate x:Key="BoxTemplate">
        <TextBox Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
                        AncestorType={x:Type ContentControl}},Path=Content}" />
    </ControlTemplate>

    <ControlTemplate x:Key="BlockTemplate" >
        <TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
                          AncestorType={x:Type ContentControl}},Path=Content}" />
    </ControlTemplate>

    <ControlTemplate x:Key="TestTemplate" >
        <StackPanel>
            <CheckBox x:Name="Switch" />
            <ContentControl x:Name="MyContent" Template="{StaticResource BoxTemplate}"
                            Content="Data is unique!" />
        </StackPanel>

        <ControlTemplate.Triggers>
            <Trigger SourceName="Switch" Property="IsChecked" Value="True">
                <Setter TargetName="MyContent" 
                        Property="Template" 
                        Value="{StaticResource BlockTemplate}"/>
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>

Проверьте это с помощью другого ContentControl:

    <ContentControl Template="{StaticResource TestTemplate}"/>  

Я уверен, что это может быть оптимизировано, но должно поставить вас на путь.

0 голосов
/ 26 января 2010

Чтобы добавить к ответу Muad'Dib, еще один способ сделать это - сложить элементы управления друг над другом, а затем уменьшить непрозрачность назад и вперед в триггере. Вы также можете сделать это с помощью VSM (создать состояние ListboxVisible и состояние ListboxHidden или любое другое имя, которое имеет смысл с точки зрения семантики)

0 голосов
/ 26 января 2010

Вы можете использовать раскадровку и / или триггер, чтобы сделать это, без проблем. Просто анимируйте свойства видимости элементов, которые вы хотите изменить.

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