0

私は次のスタイルを持っています:

<Style x:Key="WindowButtonTriggers" TargetType="Button">            
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="{StaticResource MainColorBrush}" />
            </Trigger>
            <Trigger Property="IsPressed" Value="True">
                <Setter Property="Background" Value="{StaticResource MainColorBrush}" />
            </Trigger>
        </Style.Triggers>
    </Style>
    <Style x:Key="MinimizeButton" TargetType="Button" BasedOn="{StaticResource WindowButtonTriggers}">
        <Setter Property="Background" Value="{StaticResource WhiteBrush}" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Canvas x:Name="appbar_minus" Width="48" Height="48" Clip="F1 M 0,0L 48,0L 48,48L 0,48L 0,0" Background="Transparent" UseLayoutRounding="False">
                        <Rectangle Width="24" Height="4" Canvas.Left="12" Canvas.Top="24" Stretch="Fill" Fill="{TemplateBinding Background}" />
                    </Canvas>
                </ControlTemplate>
            </Setter.Value>
        </Setter>                        
    </Style>
    <Style x:Key="CloseButton" TargetType="Button" BasedOn="{StaticResource WindowButtonTriggers}">
        <Setter Property="Background" Value="{StaticResource WhiteBrush}" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Canvas x:Name="appbar_close" Width="48" Height="48" Clip="F1 M 0,0L 48,0L 48,48L 0,48L 0,0" Background="Transparent">
                        <Path Width="20" Height="20" Canvas.Left="14" Canvas.Top="14" Stretch="Fill" Fill="{TemplateBinding Background}" Data="F1 M 17,14L 24,21L 30.9999,14.0001L 33.9999,17.0001L 27,24L 33.9999,31L 31,34L 24,27L 17,34L 14,31L 21,24L 14,17L 17,14 Z "/>
                    </Canvas>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

スタイル「MinimizeButton」でボタンを作成すると正常に動作しますが (マウスをボタンの上に置くと色が変わります)、スタイル「CloseButton」でボタンを作成すると機能せず、理由がわかりません。彼らはほとんど同じスタイルです。

どんな助けでも大歓迎です

編集

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="100"/>
    </Grid.ColumnDefinitions>
    <my:Menu Grid.Column="0" BorderThickness="0,0,1,0" BorderBrush="#FF777777"/>
    <WrapPanel Grid.Column="1" VerticalAlignment="Center" Margin="4,0,0,0">
        <Button Style="{StaticResource MinimizeButton}" />            
        <Button Style="{StaticResource CloseButton}" Command="Close" />      
    </WrapPanel>
</Grid>
4

1 に答える 1

0

機能しない理由は、Close コマンドと CanExcecute が定義されておらず、ボタンの IsEnabled プロパティが false に設定されているためです。MSDNは次のように述べています。

特定のオブジェクトに対するコマンドの実装が必ずしも存在するとは限りません。多くの場合、コマンドの実装はアプリケーション作成者の責任です。

WPF コマンドの使用を開始するには、Code Project に関する優れた記事を参照してください

于 2012-09-27T22:34:04.280 に答える