【问题标题】:ControlTemplate Trigger控制模板触发器
【发布时间】:2015-06-04 16:27:39
【问题描述】:
    <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 和事件。请发布 ControlTemplate.Trigger 之间的代码。

【问题讨论】:

标签: xaml triggers textbox


【解决方案1】:

这假设您希望在焦点集中时更改边框,因为单击文本框会集中它。没有可用的 OnClick 属性,这会在您获得焦点后更改文本框的边框。

<Trigger Property="IsKeyboardFocusWithin"
         Value="True">
    <Setter Property="BorderBrush"
            TargetName="Border"
            Value="Blue"/>
</Trigger>

编辑:

要简单地移除焦点,请将以下MouseDown 事件处理程序添加到您的窗口或页面:

MouseDown="Window_MouseDown"

在你的代码后面:

private void Window_MouseDown(object sender, MouseButtonEventArgs e)
    {
        Keyboard.ClearFocus();
    }

这将正确地从您的TextBox 中移除焦点,从而取消设置触发器以再次显示黑条。

【讨论】:

  • 谢谢,成功了。如果我点击退出,如何让它恢复正常?
  • 好吧,一旦您的键盘焦点消失,它应该返回正常颜色。如果您有另一个文本框可以点击后进入,这是否有效?
  • 是的,确实如此。我想它会,但我想如果他们点击屏幕上的某个地方,我希望它不显示。我想现在想想这并不重要。
  • 您应该能够使用这些答案获得该行为(stackoverflow.com/questions/6489032/…)。当您实际上并未将键盘焦点设置在其他位置时,默认行为不会移除键盘焦点。
  • 我如何纯粹在样式表中做到这一点。我的样式表连接到一个 .cs 文件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-15
  • 2016-06-18
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
相关资源
最近更新 更多