3

ボタンの周りに点線の境界線を描画しようとしていますが、境界線が表示されません。私がここで何を間違っているのかわからないので、助けてくれませんか?

私のXamlコード:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300">

    <Grid Background="Ivory">
        <Border Width="101" Height="31">
            <Border.BorderBrush>
                <VisualBrush>
                    <VisualBrush.Visual>
                        <Rectangle StrokeThickness="1" Stroke="Red" StrokeDashArray="1 2"/>
                    </VisualBrush.Visual>
                </VisualBrush>
            </Border.BorderBrush>
            <Button Width="100" Height="30">
                Focus Here</Button>
        </Border>
    </Grid>
</Page>

:当面の問題は境界線の太さでしたが、境界線の太さを追加しても点線の境界線は表示されません。

4

2 に答える 2

8

VisualBrushのビジュアルはそのサイズを自動的に判別できなかったため、VisualBrushは境界線のサイズに従って描画されませんでした。また、RectangleだけでなくBorderにも同じBorderThicknessを設定する必要があることに注意してください。以下のXAMLをご覧ください。それがあなたのためにうまくいくことを願っています。

<Border x:Name="MyBorderedButton" Width="101" Height="31" BorderThickness="2" >
      <Border.BorderBrush>
           <VisualBrush>
               <VisualBrush.Visual>
                   <Rectangle StrokeDashArray="4 2"
                      Stroke="Red"
                      StrokeThickness="2"
                      RadiusX="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=CornerRadius.TopRight}"
                      RadiusY="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=CornerRadius.BottomLeft}"
                      Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=ActualWidth}"
                      Height="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=ActualHeight}"/>
               </VisualBrush.Visual>
           </VisualBrush>
       </Border.BorderBrush>
       <Button>Focus Here</Button>
</Border>

それは私のために働いています

ここに画像の説明を入力してください

于 2013-02-18T13:27:13.153 に答える
2

ソリューションでは、長方形にサイズがないため、描画するときに描画するものはありません。解決策は、親の境界線からサイズを継承することです。

<Border Width="101" Height="31" BorderThickness="1">
    <Border.BorderBrush>
        <VisualBrush>
            <VisualBrush.Visual>
                <Rectangle StrokeThickness="1"
                    Stroke="Red" 
                    StrokeDashArray="1 2"
                    Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=ActualWidth}"
                    Height="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=ActualHeight}" />
            </VisualBrush.Visual>
        </VisualBrush>
    </Border.BorderBrush>
    <Button>
        Focus Here
    </Button>
</Border>
于 2013-02-18T13:26:11.533 に答える