控件模板触发器
ControlTemplate Trigger
<Style TargetType="{x:Type TextBox}">
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="KeyboardNavigation.TabNavigation" Value="None" />
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
<Setter Property="MinWidth" Value="120" />
<Setter Property="MinHeight" Value="25" />
<Setter Property="AllowDrop" Value="true" />
<Setter Property="FontSize" Value="16"/>
<Setter Property="FontFamily" Value="Arial"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Bottom"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBoxBase}">
<Border Name="Border" CornerRadius="6" Padding="2" BorderBrush="Black" BorderThickness="2,1">
<ScrollViewer Margin="0" x:Name="PART_ContentHost" />
</Border>
<ControlTemplate.Triggers>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
上面的代码是目前我的文本框的代码。我要在 ControlTemplate.Trigger 中输入什么才能使我的边框从黑色变为蓝色或在单击时增加边框大小。我尝试了一些没有任何运气的事情。这包括 style.Triggers 和事件。请 post ControlTemplate.Trigger 之间的代码。
这假设您希望在聚焦时更改边框,因为单击文本框会聚焦它。没有可用的 OnClick 属性,这会在您聚焦文本框后更改其边框。
<Trigger Property="IsKeyboardFocusWithin"
Value="True">
<Setter Property="BorderBrush"
TargetName="Border"
Value="Blue"/>
</Trigger>
编辑:
要简单地移除焦点,请将以下 MouseDown
事件处理程序添加到您的 Window 或页面:
MouseDown="Window_MouseDown"
在你后面的代码中:
private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
Keyboard.ClearFocus();
}
这将正确地从您的 TextBox
中移除焦点,从而取消设置触发器以再次出现黑条。
<Style TargetType="{x:Type TextBox}">
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="KeyboardNavigation.TabNavigation" Value="None" />
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
<Setter Property="MinWidth" Value="120" />
<Setter Property="MinHeight" Value="25" />
<Setter Property="AllowDrop" Value="true" />
<Setter Property="FontSize" Value="16"/>
<Setter Property="FontFamily" Value="Arial"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Bottom"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBoxBase}">
<Border Name="Border" CornerRadius="6" Padding="2" BorderBrush="Black" BorderThickness="2,1">
<ScrollViewer Margin="0" x:Name="PART_ContentHost" />
</Border>
<ControlTemplate.Triggers>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
上面的代码是目前我的文本框的代码。我要在 ControlTemplate.Trigger 中输入什么才能使我的边框从黑色变为蓝色或在单击时增加边框大小。我尝试了一些没有任何运气的事情。这包括 style.Triggers 和事件。请 post ControlTemplate.Trigger 之间的代码。
这假设您希望在聚焦时更改边框,因为单击文本框会聚焦它。没有可用的 OnClick 属性,这会在您聚焦文本框后更改其边框。
<Trigger Property="IsKeyboardFocusWithin"
Value="True">
<Setter Property="BorderBrush"
TargetName="Border"
Value="Blue"/>
</Trigger>
编辑:
要简单地移除焦点,请将以下 MouseDown
事件处理程序添加到您的 Window 或页面:
MouseDown="Window_MouseDown"
在你后面的代码中:
private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
Keyboard.ClearFocus();
}
这将正确地从您的 TextBox
中移除焦点,从而取消设置触发器以再次出现黑条。