0

我正在使用 XAML 和 C# 编写商店应用程序。我想使用边框和视图框。我得到了边框样式,所以我不必多次设置属性。我将 BorderThickness 设置为 2,颜色设置为白色,但这会导致我的 Viewbox 出现问题。

这是在 XAML 中:

<Viewbox Grid.Row="1" Stretch="Uniform">
  <Grid Width="600" Height="600">
    <Grid.Resources>
      <Style TargetType="Border">
        <Setter Property="BorderBrush" Value="White" />
        <Setter Property="BorderThickness" Value="2" />
      </Style>
      <Style TargetType="Grid">
        <Setter Property="VerticalAlignment" Value="Top" />
        <Setter Property="HorizontalAlignment" Value="Left" />
        <Setter Property="Width" Value="150" />
        <Setter Property="Height" Value="150" />
      </Style>
    </Grid.Resources>

    <StackPanel Orientation="Vertical">
      <StackPanel Orientation="Horizontal">
        <Grid>
          <Border>
            <Viewbox>
              <TextBlock Text="T" />
            </Viewbox>
          </Border>
        </Grid>

结果是:

在此处输入图像描述

问题是字母“T”周围的缩放边框。

我不想删除 Grid.Resources 中 Border 的上述样式。到目前为止,我只找到了一种解决方案...

            <Viewbox>
              <Viewbox.Resources>
                <Style TargetType="Border">
                  <Setter Property="BorderBrush" Value="White" />
                  <Setter Property="BorderThickness" Value="0" />
                </Style>
              </Viewbox.Resources>
              <TextBlock Text="T" />

...什么会给出正确的结果:

在此处输入图像描述

,但我不想在每个 ViewBoxes 之后放置这些行,因为会有很多。我还尝试制作一个组件,该组件具有零粗边框的默认“资源”,但缩放比例很差。

所以我的问题是如何删除该边框?

4

1 回答 1

0

您对 BorderThickness 使用零值是正确的。视觉树层次结构中可能还有另一个元素也包含导致此问题的默认值。

我现在不能测试这个,但我可以向你推荐这个工具:http: //blois.us/Snoop/

您可以通过将十字准线拖动到正在运行的调试应用程序上方来检查可视化树。每次我偶然发现这样的问题时,我发现查看哪些控件真正出现在运行时非常有用,因为使用 xaml 可能很难全部了解。希望你能找到它!

于 2013-05-05T23:44:18.020 回答