出于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看起来像这样:



我想要的是获得带有彩色背景的第二张图像。例如,在第一张图像中,我也希望背景色也能填充其余的空白。

最佳答案

您可以通过添加带有背景的GridVisualBrush来实现此目的,并在该网格中添加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>

关于wpf - VisualBrush中的TextBox.Background属性表现怪异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14736021/

10-17 01:49