WPF RibbonButton: LargeImageSource и Label не обновляются с помощью DataTriggers - PullRequest
0 голосов
/ 14 сентября 2011

Я озадачен странным явлением в поведении RibbonButton.

Все отлично работает, когда я статически устанавливаю LargeImageSource и метку в XAML:

<ribbon:RibbonButton x:Name="ButtonArchive"
                     LargeImageSource="..\Assets\archive_insert.png"
                     Label="{Binding Path=ItemArchiveButton, 
                     Source={StaticResource Strings}}"/>

Но когда я пытаюсьизмените эти свойства с помощью DataTriggers - кажется, ничего не происходит.Триггеры работают;Я вижу другие свойства - например, Command или IsEnabled - установить ОК в том же триггере.Это только эти тоже ...

Вот XAML:

<ribbon:RibbonButton x:Name="ButtonArchive"
    LargeImageSource="..\Assets\archive_insert.png"
    Label="{Binding Path=ItemArchiveButton, Source={StaticResource Strings}}">
    <ribbon:RibbonButton.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding ="{Binding ElementName=ItemsList, Path=SelectedItem.IsArchived}" Value="false">
                    <Setter Property="ribbon:RibbonButton.Command" Value="{Binding ArchiveItemCommand}" />
                    <Setter Property="ribbon:RibbonButton.LargeImageSource" Value="..\Assets\archive_insert.png" />
                    <Setter Property="ribbon:RibbonButton.Label" Value="{Binding Path=ItemArchiveButton, Source={StaticResource Strings}}" />
                </DataTrigger>
                <DataTrigger Binding ="{Binding ElementName=ItemsList, Path=SelectedItem.IsArchived}" Value="true">
                    <Setter Property="ribbon:RibbonButton.Command" Value="{Binding RestoreItemCommand}" />
                    <Setter Property="ribbon:RibbonButton.LargeImageSource" Value="..\Assets\archive_extract.png" />
                    <Setter Property="ribbon:RibbonButton.Label" Value="{Binding Path=ItemRestoreButton, Source={StaticResource Strings}}" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ribbon:RibbonButton.Style>
</ribbon:RibbonButton>

Установка команды работает отлично в обоих условиях, но не в двух других свойствах ...

Любой совет будет приветствоваться.

1 Ответ

1 голос
/ 14 сентября 2011

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

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

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