непослушные стили кнопок - PullRequest
2 голосов
/ 10 марта 2011

эти две кнопки;один включен, а другой со стилем отключен.Кто-нибудь может понять, почему?

<Button Command="{Binding ResolveHostsCommand}" VerticalAlignment="Center" IsEnabled="{Binding CanUserUpdateHosts}" Grid.Column="0" Content="Resolve" />

<Button VerticalAlignment="Center" IsEnabled="False" Content="Cancel" Grid.Column="1">
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <DataTrigger Binding="{Binding CanUserUpdateHosts}" Value="True">
                    <Setter Property="IsEnabled" Value="True"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

Ответы [ 2 ]

3 голосов
/ 10 марта 2011

Даже если вы установили CanUserUpdateHosts в значение true, Style.Setter не сможет переопределить явное значение, которое вы указали в объявлении Button.См. Страницу Значение свойства зависимости Приоритет .Установщики стилей в триггерах находятся на # 6, в то время как явное значение равно 3.

Вам нужно будет изменить свою логику, например, так:

<Button Command="{Binding ResolveHostsCommand}" VerticalAlignment="Center" IsEnabled="{Binding CanUserUpdateHosts}" Grid.Column="0" Content="Resolve" />
<Button  VerticalAlignment="Center" Content="Cancel" Grid.Column="1">
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <DataTrigger Binding="{Binding CanUserUpdateHosts}" Value="False">
                    <Setter Property="IsEnabled" Value="False"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

Или вы можете установить IsEnabled наfalse, используя Setter вашего стиля, например:

<Button Command="{Binding ResolveHostsCommand}" VerticalAlignment="Center" IsEnabled="{Binding CanUserUpdateHosts}" Grid.Column="0" Content="Resolve" />
<Button  VerticalAlignment="Center" Content="Cancel" Grid.Column="1">
    <Button.Style>
        <Style TargetType="Button">
            <Setter Property="IsEnabled" Value="False"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding CanUserUpdateHosts}" Value="True">
                    <Setter Property="IsEnabled" Value="True"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>
2 голосов
/ 10 марта 2011

Вы пометили IsEnabled как ложное.

<Button VerticalAlignment="Center" IsEnabled="False"...>
...