11

背景を変更する必要があるのButtonは、有効になっていない場合のみです(たとえば、SolidColorBrushなどIsEnabled == false)。
どのようにできるのか?

StyleXAMLを使用してボタンを変更する必要がありますか、それともプログラムでこの作業を行うことができますか?有効になっていないときにバックグラウンドのみを変更するための正しいXAMLコードは何ですか?

次のXAMLコードを試しましたが、効果がありません。

<Button>
<Button.Style>
    <Style TargetType="Button">
        <Style.Triggers>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Background" Value="Red"></Setter>
            </Trigger>
        </Style.Triggers>
    </Style>
</Button.Style>
</Button>
4

2 に答える 2

7

テンプレートを編集して背景を変更できます。Button ここにデフォルトのテンプレートがあります。

のトリガーに、次のIsEnabledようなものを追加するだけです。

<Setter Property="Background" Value="{StaticResource DisabledBackgroundBrush}"/>

編集:代わりにこれを試してください。

<Window.Resources>
    <Style TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border x:Name="Overlay" CornerRadius="2">
                        <ContentPresenter/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter TargetName="Overlay" Property="Background" Value="Red"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>
<StackPanel>
    <Button Content="Button" IsEnabled="False"/>
</StackPanel>

ニーズに合わせて変更するだけです。

于 2013-01-15T12:37:34.700 に答える
-1

スタイル トリガーを使用できます。

<Image.Style>
    <Style>
        <Style.Triggers>
            <DataTrigger Binding="{Binding IsEnabled}" Value="False">
                <Setter Property="Image.Source" Value="pack://application:,,,/disabled.png" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Image.Style>
于 2013-01-15T12:30:36.033 に答える