WPF 内部带有样式和文本块的矩形

发布于 2024-10-25 06:03:30 字数 756 浏览 2 评论 0原文

我想为矩形创建样式或模板。这些属性非常肤浅:改变了背景颜色、半径。

另外我想在矩形内部添加文本。

我找到了很多例子,但没有一个最适合我的需求。是否可以创建一个模板,以我只需要调用的方式绘制矩形和文本

<Rectangle template={StaticRessources myBox}/>

,并应用定义的模板?到目前为止,文本并未在矩形内对齐:

<ControlTemplate x:Key="greenBoxTemplate">
        <Grid>
            <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="25" Text="Hello World" TextWrapping="Wrap"/>
            <Rectangle Height="100" HorizontalAlignment="Left" Margin="233,144,0,0" Name="BNU2" Style="{StaticResource greenBox}" Stroke="Black" VerticalAlignment="Top" Width="200"/>
        </Grid>
    </ControlTemplate>

就其价值而言,模板应用于按钮,但实际上我想将其应用于不起作用的矩形。

I would like to create a style or template for rectangles. The properties are quite superficial: changed background color, radius.

In addition I would like to add text inside of the rectangle.

I've found alot of examples, but none fit my needs the best. Is it possible to create a template drawing the rectangle and text inside in a way I only need to call

<Rectangle template={StaticRessources myBox}/>

And the defined template is applied? So far I came, the text is not aligned inside the rectangle:

<ControlTemplate x:Key="greenBoxTemplate">
        <Grid>
            <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="25" Text="Hello World" TextWrapping="Wrap"/>
            <Rectangle Height="100" HorizontalAlignment="Left" Margin="233,144,0,0" Name="BNU2" Style="{StaticResource greenBox}" Stroke="Black" VerticalAlignment="Top" Width="200"/>
        </Grid>
    </ControlTemplate>

For what it's worth, the template is applied to a button, but actually I want to apply it to rectangle which does not work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谁的新欢旧爱 2024-11-01 06:03:30

您需要的是一个装饰器。已经有一个似乎非常适合您: 边框

如果您希望具有某些预定义值的元素具有重复边框,您可以创建为 Style like:

<Style TargetType="Border" x:Key="MyBorderStyle">
    <Setter Property="Background" Value="Red"/>
    <Setter Property="CornerRadius" Value="3px"/>
</Style>

并像这样应用它:

<Border Style="{StaticResource MyBorderStyle}">
    <TextBlock>Hello World</TextBlock>
</Border>

What you need is a Decorator. There is one already that seems like to fit for you perfectly: Border

if you want to have a recurring border for elements with some predefined values you can create as Style like:

<Style TargetType="Border" x:Key="MyBorderStyle">
    <Setter Property="Background" Value="Red"/>
    <Setter Property="CornerRadius" Value="3px"/>
</Style>

and apply it like:

<Border Style="{StaticResource MyBorderStyle}">
    <TextBlock>Hello World</TextBlock>
</Border>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文