注:私はMahApps.Metroを使用しています。WPFフォーカスの変更TextBox背景色
私が望むのは、アプリケーションのすべてのテキストボックスに影響するグローバルスタイルを作成することです。スタイルはフォーカス(マウス、キーボードなど)に合わせて、フォーカスされたTextBoxの背景を変更する必要があります。
私の問題は、私はまだスタイルやテンプレートを吸う Change the focused border color of a Wpf textbox when it GotFocus()
に似ています。これは彼らが使用したコードです。
<Style
BasedOn="{StaticResource {x:Type TextBox}}"
TargetType="TextBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Border
x:Name="border"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
SnapsToDevicePixels="True">
<ScrollViewer
x:Name="PART_ContentHost"
Focusable="false"
HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Hidden" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter TargetName="border" Property="Opacity" Value="0.56" />
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="border" Property="BorderBrush" Value="#FF7EB4EA" />
</Trigger>
<Trigger Property="IsFocused" Value="true">
<Setter TargetName="border" Property="BorderBrush" Value="Yellow" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
ボーダーではなく背景を変更するこのようなコントロールテンプレートを作成するにはどうすればよいですか? 私はMetroを使用しているので、ベースTextBoxを拡張する必要があります。そうしないと、事前設定されたすべてが失われます。
上記のテンプレートを使用すると、ポインタが少し上に移動し、その高さも短くなっていることに気付きました。おそらくポインタ設定を上書きしているでしょうか?
これは解決策でした。それは私の初期のアイデアでしたが、私はBasedOnで初めて何かを混乱させたと思います。追加情報についてもありがとうございました:) – Desomph
あなたはようこそ。 – babgev