WPF Styling и Templating для многих кнопок? - PullRequest
0 голосов
/ 22 апреля 2011

Я не могу получить правильную комбинацию для получения желаемого эффекта:

Текущий XAML:

<Button Content="Foo" prism:Click.Command="{Binding FooCommand}"
        Visibility="{Binding IsEnabled, RelativeSource={RelativeSource Self}, Converter={ncon:VisibilityBooleanConverter}}" />
<Button Content="Bar" prism:Click.Command="{Binding BarCommand}"
        Visibility="{Binding IsEnabled, RelativeSource={RelativeSource Self}, Converter={ncon:VisibilityBooleanConverter}}" />

Я хочу извлечь Visibility="{Binding IsEnabled, RelativeSource={RelativeSource Self}, Converter={ncon:VisibilityBooleanConverter}}" как стиль дляприменить ко всем кнопкам (в рамках этих ресурсов UserControl).Кажется, я не могу получить правильную комбинацию, чтобы это произошло.

По сути, вместо того, чтобы просто отключить кнопку, основанную на ICommand.CanExecute, она берет этот DependencyProperty и привязывает его кВидимость кнопки с использованием преобразователя логической видимости, поэтому кнопка не только отключена, но и свернута.

Ответы [ 2 ]

2 голосов
/ 22 апреля 2011

Стиль выглядел бы так, я полагаю:

<Style TargetType="{x:Type Button}">
    <Setter Property="Visibility"
            Value="{Binding IsEnabled, RelativeSource={RelativeSource Self}, Converter={ncon:VisibilityBooleanConverter}}"/>
</Style>

Разве это не работает?

1 голос
/ 22 апреля 2011
<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}, Converter={ncon:VisibilityBooleanConverter}}" Value="Visible">
            <Setter Property="Visibility" Value="Visible"/>
        </DataTrigger>
    </Style.Triggers>
</Style>
...