これはOverriding button background in WPF on Aeroへとマイナー度Custom Control Styling/Triggersのフォローアップです。カスタムコントロールスタイリング/トリガパートII - オーバーライドエアロ
トグルボタンの機能を維持するが、ボタンのスタイルを取り除くためにしようと、私は上記の最初のリンクのプロセスに従いました。これは基本的に、ToggleButton
。
上だから今私の問題があるときだけではなく、それはどこかのウィンドウに超えることにマウスを感知したそうでなければfalse
へRenderMouseOver
とRenderPressed
を(変更のマイナーな修正とはいえ、作品IsMouseOver
トリガーは背景をまったく変更しません。
補足として、BitmapEffect
を使用して、トグル時に文字が輝くようにしようとしましたが、問題ありません私が使っている設定は効果がないようです。これを具体的に扱うガイドは誰でも知っていますか?
<Style TargetType="{x:Type local:TimePicker}">
<Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Height}" />
<Setter Property="Width" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Width}" />
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border Background="{TemplateBinding Background}"
BorderBrush="Black"
BorderThickness="1">
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Center"
VerticalAlignment="{TemplateBinding VerticalAlignment}">
<ToggleButton VerticalAlignment="{TemplateBinding VerticalAlignment}"
Margin="0"
Background="{TemplateBinding Background}"
BorderBrush="Transparent"
Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Hour}">
<ToggleButton.Template>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Aero:ButtonChrome SnapsToDevicePixels="True"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
RenderMouseOver="False"
RenderPressed="False">
<ContentPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
/>
</Aero:ButtonChrome>
</ControlTemplate>
</ToggleButton.Template>
<ToggleButton.Style>
<Style TargetType="ToggleButton">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="Background" Value="LightGray" />
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Foreground" Value="Red" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="BitmapEffect">
<Setter.Value>
<OuterGlowBitmapEffect GlowColor="Red" GlowSize="30" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ToggleButton.Style>
</ToggleButton>
<Label HorizontalContentAlignment="{TemplateBinding HorizontalAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalAlignment}"
Content=":"/>
<ToggleButton VerticalAlignment="{TemplateBinding VerticalAlignment}"
Margin="0"
Background="{TemplateBinding Background}"
BorderBrush="Transparent"
Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Minute}" />
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
はちょうどそれを試してみました:動作しませんでした。私はそこに何も書かれていないのに、それを試してみました。 :) –
スタイルやコントロールテンプレートの作成に本当に関心があるなら、このサイトを例にしてみてください。http://msdn.microsoft.com/en-us/library/ms752043.aspx私はテーマを使用することを常に避けていますAreoと他の5,6のように用意されているので、何も教えてくれないからです。 – Silvermind
私はこれで2つの問題に遭遇しました。まず、OverridesDefaultStyleはバックグラウンドホバーの問題を修正しませんでした。次に、ぼかし効果に関して、VSはスタイルセッター内でTargetNameを設定することはできません。これが重要かどうかわかりませんが、これはカスタムコントロールのgeneric.xamlファイルの中にあります。ああ、私は本当に助けに感謝します。 –