VisualBrush中的TextBox.Background属性表现得很奇怪

时间:2013-02-06 18:17:56

标签: wpf xaml

关于this问题,我有一个文本框定义如下:

<TextBox>
    <TextBox.Background>
        <VisualBrush Stretch="Uniform">
            <VisualBrush.Visual>
                <StackPanel>
                    <TextBlock Background="Blue" Opacity="0.5" Text="155"/>
                </StackPanel>
            </VisualBrush.Visual>
        </VisualBrush>
    </TextBox.Background>
</TextBox>

这会产生TextBox,如下所示:

TextBox with Background

现在,如果删除背景属性,TextBox将如下所示:

TextBox without background

我想要的是用彩色背景来获得第二张图像。例如,在第一张图片中,我希望背景颜色也可以填充剩余的空白区域。

1 个答案:

答案 0 :(得分:1)

您可以通过将Grid与背景添加为VisualBrush来实现此目的,并在该网格中添加TextBox

<Grid>
    <Grid.Style>
        <Style TargetType="Grid">
            <Setter Property="Background">
                <Setter.Value>
                    <VisualBrush Stretch="Fill">
                        <VisualBrush.Visual>
                            <Rectangle Stretch="Fill" Stroke="Blue" Opacity="0.5" />
                        </VisualBrush.Visual>
                    </VisualBrush>
                </Setter.Value>
            </Setter>
        </Style>
    </Grid.Style>
    <TextBox>
        <TextBox.Style>               
            <Style TargetType="TextBox">
                <Setter Property="Foreground" Value="Black" />                    
                <Setter Property="Background">
                    <Setter.Value>
                        <VisualBrush Stretch="Uniform">
                            <VisualBrush.Visual>
                                <TextBlock Foreground="Gray" Opacity="0.5" Text="155"/>
                            </VisualBrush.Visual>
                        </VisualBrush>
                    </Setter.Value>
                </Setter>
            </Style>
        </TextBox.Style>
    </TextBox>
</Grid>