1

マウスがそれを乗り越えると色が変わるコントロールがあります。コントロールのスタイルを使用して解決しようとしました:

<Style TargetType="{x:Type local:Control}">
     <Setter Property="Background" Value="Transparent" />
    <Setter Property="BorderBrush" Value="{x:Null}" />
    <Setter Property="MouseHoverBackgroundColor" Value="#FFFFEFBB" />
    <Setter Property="MouseHoverBorderColor" Value="#FFE5C365" />
    <Setter Property="MouseHoverBorderThickness" Value="2" />
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="true">

            <Setter Property="Background">
                <Setter.Value>
                    <!-- Here I have to get the Value of the current "MouseHoverBackgroundColor"-DependencyProperty. -->
                </Setter.Value>
            </Setter>
            <Setter Property="BorderBrush">
        <Setter.Value>
            <!-- MouseHoverBorderColor -->
        </Setter.Value>
        </Setter>   
            <Setter Property="BorderThickness">
                <Setter.Value>
            <!-- MouseHoverBorderColor -->
            </Setter.Value>
            </Setter> 

        </Trigger>
    </Style.Triggers>
</Style>

DependencyProperty の現在の値にアクセスする方法が実際にはわかりません。

心から

ユーザー1574054

4

1 に答える 1

0

質問が求めるように設定したくないと思いますが、代わりに使用MouseHoverBorderColorしますBorderThicknessMouseHoverBorderThickness

<Style TargetType="{x:Type local:Control}">
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="BorderBrush" Value="{x:Null}" />
    <Setter Property="MouseHoverBackgroundColor" Value="#FFFFEFBB" />
    <Setter Property="MouseHoverBorderColor" Value="#FFE5C365" />
    <Setter Property="MouseHoverBorderThickness" Value="2" />
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="true">    
            <Setter Property="Background" Value="{Binding RelativeSource={RelativeSource Self}, Path=MouseHoverBackgroundColor}">
            </Setter>
            <Setter Property="BorderBrush" Value="{Binding RelativeSource={RelativeSource Self}, Path=MouseHoverBorderColor}">
            </Setter>   
            <Setter Property="BorderThickness" Value="{Binding RelativeSource={RelativeSource Self}, Path=MouseHoverBorderThickness}">
            </Setter>    
        </Trigger>
    </Style.Triggers>
</Style>

このアプローチを使用する別の理由があることを願っていますが、ホバーの色と並べ替えには別の DP があります。

トリガーの色を変更することだけが必要な場合は、スタイル リソースとしてブラシを作成し、トリガーが呼び出されたときに対応するブラシを適用します。そのようなものの依存関係プロパティを作成する必要がなくなります

次のように言います (ControlTemplate を必要なものに変更できます):

<Style x:Key="ButtonStyle"
        TargetType="{x:Type Button}">
  <Style.Resources>
    <SolidColorBrush x:Key="Button.IsMouseOver.Background"
                      Color="#FFFFEFBB" />
    <SolidColorBrush x:Key="Button.IsMouseOver.BorderColor"
                      Color="#FFE5C365" />
    <Thickness x:Key="Button.IsMouseOver.Thickness">2</Thickness>
  </Style.Resources>
  <Setter Property="Background"
          Value="Transparent" />
  <Setter Property="BorderBrush"
          Value="{x:Null}" />
  <Setter Property="BorderThickness"
          Value="0" />
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type Button}">
        <Border BorderBrush="{TemplateBinding BorderBrush}"
                BorderThickness="{TemplateBinding BorderThickness}">
          <ContentPresenter />
        </Border>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
  <Style.Triggers>
    <Trigger Property="IsMouseOver"
              Value="true">
      <Setter Property="Background"
              Value="{StaticResource Button.IsMouseOver.Background}" />
      <Setter Property="BorderBrush"
              Value="{StaticResource Button.IsMouseOver.BorderColor}" />
      <Setter Property="BorderThickness"
              Value="{StaticResource Button.IsMouseOver.Thickness}" />
    </Trigger>
  </Style.Triggers>
</Style>
于 2013-03-29T12:19:09.197 に答える