none
关于 Text Border 的一个奇怪的问题 RRS feed

  • 问题

  • 先看xaml

    <Window x:Class="WPFTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
      <Window.Resources>
        <Style TargetType="{x:Type TextBox}">
          <Setter Property="BorderThickness" Value="1" />
          <Style.Triggers>
            <Trigger Property="IsFocused" Value="True">
              <Setter Property="BorderBrush" Value="Orange" />
            </Trigger>        
          </Style.Triggers>
        </Style>
      </Window.Resources>
      <Grid>
        <TextBox Height="23" HorizontalAlignment="Left" Margin="107,53,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" />
      </Grid>
    </Window>
    

     TextBox 在 获得焦点的时候 其 border 的颜色 并没有 变成Orange。 但是 我把 BorderThickness变成2 ,但TextBox获取焦点的时候 其 border 的颜色就可以 变成 Orange

    2010年8月15日 1:56

答案

  • 具体什么原因不知道,一直就是这样的,只要是1像素就绘制系统默认的样式,0.9999999999999999像素就绘制你的自定义框线,0.99999999999999999就不绘制。以前还有另一种现象,设置0像素框线不会让框线消失,依然绘制1像素,设置0.001就可以让框线消失,现在Win7里没发现这一问题。肯定和WPF的呈现设计有关,但外人不得而知,只有微软知道究竟怎么回事。

    2010年8月18日 12:53

全部回复

  • 具体什么原因不知道,一直就是这样的,只要是1像素就绘制系统默认的样式,0.9999999999999999像素就绘制你的自定义框线,0.99999999999999999就不绘制。以前还有另一种现象,设置0像素框线不会让框线消失,依然绘制1像素,设置0.001就可以让框线消失,现在Win7里没发现这一问题。肯定和WPF的呈现设计有关,但外人不得而知,只有微软知道究竟怎么回事。

    2010年8月18日 12:53
  • 还真是这样的,我设置成1.1 就可以了。 也不知道是什么原因??

    其实一直以为 MS 做事很严谨。

    希望WPF能发展的好。

    2010年8月19日 13:30