【问题标题】:Content of a WPF button - unable to put anything but textWPF 按钮的内容 - 除了文本不能放任何东西
【发布时间】:2009-12-27 17:04:30
【问题描述】:

我在 Expression Design 中设计了一个带有红色背景和渐变的漂亮 STOP 图形 - 就像它会在真正的录音机或其他东西上看起来一样。

我将其导出为 XAML WPF 资源字典并获得了 XAML 代码。

我希望此图形与文本“STOP”一起出现在按钮内。

如果我直接将 XAML 粘贴到按钮标签内,它就不起作用。

我尝试搜索,但所有搜索结果似乎都在谈论一种叫做按钮模板的东西,它们正在设置样式和东西。这不是我想要的。

是不是你在 Expression Design 中设计的所有东西都不会进入按钮? 如何将任何设计 XAML 作为按钮的内容?

编辑

这是我从导出为 XAML 中得到的。这个可以放在Button标签里面吗?

<DrawingBrush x:Key="Layer_1" Stretch="Uniform">
  <DrawingBrush.Drawing>
    <DrawingGroup>
      <DrawingGroup.Children>
        <GeometryDrawing Geometry="F1 M 2.72,0.160004L 16.0533,0.160004C 17.4672,0.160004 18.6133,1.30615 18.6133,2.72L 18.6133,12.96C 18.6133,14.3739 17.4672,15.52 16.0533,15.52L 2.72,15.52C 1.30615,15.52 0.16,14.3739 0.16,12.96L 0.16,2.72C 0.16,1.30615 1.30615,0.160004 2.72,0.160004 Z ">
          <GeometryDrawing.Pen>
            <Pen Thickness="0.32" LineJoin="Round" Brush="#FFFFFFFF"/>
          </GeometryDrawing.Pen>
          <GeometryDrawing.Brush>
            <LinearGradientBrush StartPoint="0.5,-0.111111" EndPoint="0.5,1.11111">
            <LinearGradientBrush.GradientStops>
              <GradientStop Color="#FFDDB8B8" Offset="0.00465116"/>
              <GradientStop Color="#FFA60E0E" Offset="0.986046"/>
            </LinearGradientBrush.GradientStops>
            </LinearGradientBrush>
          </GeometryDrawing.Brush>
        </GeometryDrawing>
      </DrawingGroup.Children>
    </DrawingGroup>
  </DrawingBrush.Drawing>

.

【问题讨论】:

    标签: wpf xaml graphics button


    【解决方案1】:

    与其使用 DrawingBrush,不如使用 Rectange?表达式设计很棒,但它导出的 XAML 对我来说有点太多了。我建议添加一个矩形作为资源,然后将你的按钮的内容设置为资源,如下:

    <Grid>
        <Grid.Resources>
            <Rectangle x:Key="Stop" RadiusX="3" RadiusY="3" Width="20" Height="20">
                <Rectangle.Fill>
                    <LinearGradientBrush StartPoint="0.5,1" EndPoint="0.5,0">
                        <LinearGradientBrush.GradientStops>
                            <GradientStop Color="#FFAD2323" Offset="0"/>
                            <GradientStop Color="#FFD6A0A0" Offset="1"/>
                        </LinearGradientBrush.GradientStops>
                    </LinearGradientBrush>
                </Rectangle.Fill>
            </Rectangle>
        </Grid.Resources>
    
        <Button Width="100" Height="30" Content="{StaticResource Stop}"/>
    </Grid>
    

    当然,您也可以将设计导出为 .png...

    【讨论】:

    • 我认为无论导出的表达式是什么,都有可能。我不知道你可以用矩形做同样的事情。我想我应该详细研究 XAML。谢谢:)
    • 这应该也适用于您导出的 XAML。只需将 Brent 示例中的 LinearGradientBrush 替换为您的 DrawingBrush。
    【解决方案2】:

    您已经定义了一个画笔。现在你需要一些东西来画画。尝试使用:

     <Button Background="{StaticResource Layer_1}" Content="STOP"> />
    

    您可能需要编辑按钮模板以更改其他按钮状态,例如按下、鼠标悬停等。

    【讨论】:

    • 等等,XAML 只能作为背景?我已经有另一个渐变作为背景。这个可以在STOP旁边吗?
    • 不,这只是一个快速破解,因此您可以看到您的画笔在使用中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    相关资源
    最近更新 更多