0

アプリケーションのすべてのトグルボタンのスタイルを作成したいと思います。異なる画像をロードすることを除いて、それらはすべて同じ動作をします。私のアイデアは、ボタンが押されたときに、コード内のリソース「ToggleButtonImg_Disabled」、「ToggleButtonImg_IsMouseOver」、「ToggleButtonImg_IsPressed」、および「ToggleButtonImg_IsChecked」を変更することでした。しかし、それは機能していません...誰かが私を助けることができます!前もって感謝します!

XAML

<Image Width="20" Source="Resources/Images/icon_stop.png" x:Key="ToggleButtonImg_Disabled" />
<Image Width="20" Source="Resources/Images/icon_stop.png" x:Key="ToggleButtonImg_IsMouseOver" />
<Image Width="20" Source="Resources/Images/icon_stop.png" x:Key="ToggleButtonImg_IsPressed" />
<Image Width="20" Source="Resources/Images/icon_stop.png" x:Key="ToggleButtonImg_IsChecked" />



<Style TargetType="{x:Type ToggleButton}" x:Key="ToggleButtonStyle">
    <Setter Property="SnapsToDevicePixels" Value="true"/>
    <Setter Property="OverridesDefaultStyle" Value="true"/>
    <Setter Property="Content" Value="{DynamicResource ToggleButtonImg_Disabled}" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ToggleButton">
                <Border 
                  x:Name="CustomControlTemplate"  
                  CornerRadius="2" 
                  BorderThickness="1">
                      <ContentPresenter 
                        Margin="2"
                        HorizontalAlignment="Center"
                        VerticalAlignment="Center"
                        RecognizesAccessKey="True"/>
                </Border>
                <ControlTemplate.Triggers>

                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter Property="Content" Value="{DynamicResource ToggleButtonImg_IsMouseOver}" />
                    </Trigger>
                    <Trigger Property="IsPressed" Value="true">
                        <Setter Property="Content" Value="{DynamicResource ToggleButtonImg_IsPressed}" />
                    </Trigger>
                    <Trigger Property="IsChecked" Value="True">
                        <Setter Property="Content" Value="{DynamicResource ToggleButtonImg_IsChecked}" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

コード

//ボタンが押されたときのボタンの画像を設定します

                BitmapImage img = new BitmapImage();
                img.BeginInit();
                img.UriSource = new Uri(@"Resources/Images/icon_play.png", UriKind.Relative);
                img.EndInit();
                _receiver.Resources["ToggleButtonImg_IsChecked"] = img;

コードが更新されました(XAMLのみ):

<Style TargetType="{x:Type ToggleButton}" x:Key="ToggleButtonStyle">
    <Setter Property="SnapsToDevicePixels" Value="true"/>
    <Setter Property="OverridesDefaultStyle" Value="true"/>
    <Setter Property="Content" Value="{DynamicResource ToggleButtonImg_Disabled}" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ToggleButton">
                <Image x:Name="CustomControlTemplate" 
                       Width="20" 
                       Source="Resources/Images/icon_stop.png"
                />
                <ControlTemplate.Triggers>

                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter TargetName="CustomControlTemplate" Property="Source" Value="{DynamicResource ToggleButtonImg_IsMouseOver}" />
                    </Trigger>
                    <Trigger Property="IsPressed" Value="true">
                        <Setter TargetName="CustomControlTemplate" Property="Source" Value="{DynamicResource ToggleButtonImg_IsPressed}" />
                    </Trigger>
                    <Trigger Property="IsChecked" Value="True">
                        <Setter TargetName="CustomControlTemplate" Property="Source" Value="{DynamicResource ToggleButtonImg_IsChecked}" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
4

1 に答える 1

0

必要な場所に ControlTemplate に Image-Control を追加し、トリガーのセッターを次のように変更します。

<Setter TargetName="imageName" Property="Source" Value="{DynamicResource resourceKey}" />

編集: イメージの代わりに、BitmapImages をソースとして使用します:

<BitmapImage Width="20" UriSource="Resources/Images/icon_stop.png" x:Key="ToggleButtonImg_Disabled" />
<BitmapImage Width="20" UriSource="Resources/Images/icon_stop.png" x:Key="ToggleButtonImg_IsMouseOver" />
<BitmapImage Width="20" UriSource="Resources/Images/icon_stop.png" x:Key="ToggleButtonImg_IsPressed" />
<BitmapImage Width="20" UriSource="Resources/Images/icon_stop.png" x:Key="ToggleButtonImg_IsChecked" /> 
于 2012-10-18T10:05:00.080 に答える