WPF Style.Trigger - PullRequest
       20

WPF Style.Trigger

1 голос
/ 06 октября 2009

Кто-нибудь может сказать мне, почему этот триггер не работает:

<!--Style-->
<Style x:Key="Test" TargetType="{x:Type Expander}">
            <Style.Triggers>
                <Trigger Property="IsEnabled" Value="false">
                    <Setter Property="IsExpanded" Value="false"></Setter>
                </Trigger>
            </Style.Triggers>
        </Style>

<!-- Syle applyed in expander -->
<Expander Header="Expander" Margin="40,89,118,0" Name="expander1" Height="23" VerticalAlignment="Top" >
            <Grid>
                <Ellipse Height="100" Margin="86,0,-8,-58" Name="ellipse1" Stroke="Black" VerticalAlignment="Bottom" />        
            </Grid>
        </Expander>

<!-- Code Behind -->
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            this.expander1.IsEnabled = false;
        }

Я пытаюсь другими способами, но безуспешно .. Есть другой способ свернуть контент, когда расширитель отключен.

Ответы [ 3 ]

1 голос
/ 06 октября 2009

Вам необходимо применить стиль к Expander, например:

<Expander Header="Expander" Name="expander1" Style="{StaticResource Test}" >
...
</Expander>

Если вы не хотите явно применять стиль, не объявляйте x:Key="Test" и все расширители в той же области, что и этот ресурс (т.е. все расширители на этой конкретной странице, если вы объявили x:Key="Test" в <Page.Resources>) унаследует этот стиль.

0 голосов
/ 06 октября 2009

Проблема в том, что когда пользователь нажимает на расширитель, устанавливается IsExpanded «локальное значение», которое имеет приоритет над триггером. См. эту страницу MSDN для получения дополнительной информации о приоритете значения свойства зависимости.

Возможным решением будет переписать весь шаблон элемента управления Expander, добавив триггер к триггерам шаблона, который скрывает «расширенную» зону, если IsEnabled ложно (шаблон по умолчанию делает это, только если IsExpanded ложно) , Вы можете получить шаблон по умолчанию, используя Blend, добавив расширитель в Окне, щелкните его правой кнопкой мыши и выберите «Изменить шаблон»> «Изменить копию» в контекстном меню.

0 голосов
/ 06 октября 2009

Спасибо, но я забыл блок кода, который вы упомянули. Я поместил ссылку в тег Style, и проблема не исчезла.

...