与背景图象和颜色的TextBox

时间:2012-08-29 14:21:47

标签: wpf xaml textbox

我有一个TextBox控件,我希望能够设置背景图像和背景颜色。

目前我可以设置一个,或另一个但不能同时设置。当我尝试同时设置两者时,我收到“属性'背景'设置不止一次”错误。

以下是我使用的代码:

<TextBox Name="tbImageTextBox">
      <TextBox.Background>
           <ImageBrush ImageSource="/Resources/Images/image.png" 
                  AlignmentX="Right" Stretch="None"/>
           <SolidColorBrush>#FF8D8A8A</SolidColorBrush>
      </TextBox.Background>
</TextBox>

我还尝试在TextBox的样式中设置背景颜色,在<TextBox.Background>中设置图像,但颜色会被忽略。

4 个答案:

答案 0 :(得分:3)

根据需要将网格资源用于背景。相同的资源可用于多个文本框。

<Grid>
    <Grid.Resources>
        <ImageBrush x:Key="img" ImageSource="Blue hills.jpg"></ImageBrush>
        <SolidColorBrush x:Key="brownBrush" Color="Brown"></SolidColorBrush>
    </Grid.Resources>

    <TextBox x:Name="test" Background="{StaticResource img}" Width="100" Height="40" />
</Grid>

答案 1 :(得分:2)

我最终将TextBox放入一个带有Background颜色集的网格中,并将背景图像应用到TextBox本身,因为使用VisualBrush和DrawingBrush拉伸我的图像或仅将背景颜色应用于图像 - 而不是TextBox的其余部分

答案 2 :(得分:1)

您需要在单个Brush实例中合并颜色和图片,您可以使用包含Image控件的DrawingBrushVisualBrush例如,Background设置为颜色。

答案 3 :(得分:1)

您可能需要VisualBrushDrawingBrush。有关这些的更多信息,请访问MSDN here。这样的事情可能会让你开始:

<Rectangle Width="75" Height="75">
  <Rectangle.Fill>
    <VisualBrush TileMode="Tile">
      <VisualBrush.Visual>
        <Grid>
          <Image BaseUri="somepic.png" />
          <Rectangle Brush="FF8D8A8A" />  
        </Grid>
      </VisualBrush.Visual>
    </VisualBrush>
  </Rectangle.Fill>
</Rectangle>