装饰用户控件 WPF

发布于 2024-10-17 10:55:54 字数 1134 浏览 2 评论 0原文

我想在组中装饰一些控件,例如:

<UserControl x:Class="Infrastructure.UI.ItemsGroup" ... >
    <Border BorderBrush="Black" BorderThickness="1" CornerRadius="5" Background="Red">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="25" />
            </Grid.RowDefinitions>
            <ContentPresenter Grid.Row="0" />
            <TextBlock x:Name="ctrlGroupText" Grid.Row="1" HorizontalAlignment="Center" />
        </Grid>
    </Border>
</UserControl>

并在其他 XAML 文件中使用它,例如:

<Grid Grid.Column="0">
    <UI:ItemsGroup GroupText="Hello World">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Button>1111</Button>
            <Button>1111</Button>
        </Grid>
    </UI:ItemsGroup>
</Grid>

但它不起作用。我做错了什么? :) 谢谢

I want to decorate some controls in groups like:

<UserControl x:Class="Infrastructure.UI.ItemsGroup" ... >
    <Border BorderBrush="Black" BorderThickness="1" CornerRadius="5" Background="Red">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="25" />
            </Grid.RowDefinitions>
            <ContentPresenter Grid.Row="0" />
            <TextBlock x:Name="ctrlGroupText" Grid.Row="1" HorizontalAlignment="Center" />
        </Grid>
    </Border>
</UserControl>

And use it in other XAML-files like:

<Grid Grid.Column="0">
    <UI:ItemsGroup GroupText="Hello World">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Button>1111</Button>
            <Button>1111</Button>
        </Grid>
    </UI:ItemsGroup>
</Grid>

But it doesn't work. What did I wrong? :)
Thanks

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

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

发布评论

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

评论(1

魄砕の薆 2024-10-24 10:55:54

您需要编辑 UserControl 的模板,而不是将 Border 添加为子

<UserControl x:Class="Infrastructure.UI.ItemsGroup" ... >
    <UserControl.Template>
        <ControlTemplate TargetType="{x:Type UserControl}">
            <Border BorderBrush="Black" BorderThickness="1" CornerRadius="5" Background="Red">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*" />
                        <RowDefinition Height="25" />
                    </Grid.RowDefinitions>
                    <ContentPresenter Grid.Row="0" />
                    <TextBlock x:Name="ctrlGroupText" Grid.Row="1" HorizontalAlignment="Center" />
                </Grid>
            </Border>
        </ControlTemplate>
    </UserControl.Template>
</UserControl>

更新

要设置 TextBlock< 的文本/code> 到 GroupText 您可以使用绑定

<TextBlock x:Name="ctrlGroupText"
           Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type local:ItemsGroup}},
                          Path=GroupText}"
           Grid.Row="1"
           HorizontalAlignment="Center" />

You need to edit the Template for the UserControl instead of adding the Border as the Child

<UserControl x:Class="Infrastructure.UI.ItemsGroup" ... >
    <UserControl.Template>
        <ControlTemplate TargetType="{x:Type UserControl}">
            <Border BorderBrush="Black" BorderThickness="1" CornerRadius="5" Background="Red">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*" />
                        <RowDefinition Height="25" />
                    </Grid.RowDefinitions>
                    <ContentPresenter Grid.Row="0" />
                    <TextBlock x:Name="ctrlGroupText" Grid.Row="1" HorizontalAlignment="Center" />
                </Grid>
            </Border>
        </ControlTemplate>
    </UserControl.Template>
</UserControl>

Update

To set the Text for the TextBlock to GroupText you can use a Binding

<TextBlock x:Name="ctrlGroupText"
           Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type local:ItemsGroup}},
                          Path=GroupText}"
           Grid.Row="1"
           HorizontalAlignment="Center" />
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文