WPF:如何在设计器中定义自定义控件的外观?

发布于 2024-10-16 13:58:42 字数 128 浏览 1 评论 0原文

因此,我喜欢这样一个事实:自定义控件的外观可以在 generic.xaml 中重新定义,因此我想创建一个。但我的问题是,您最初如何设计(使用设计器)自定义控件的外观?与用户控件不同,它没有附加的 xaml/设计器窗口。那么必须用代码来设计吗?

So I like the fact that the look of custom controls can be re-defined in generic.xaml so I'd like to create one. But my issue is, how do you initially DESIGN (using the designer) the look for the custom control? unlike a user control it doesn't have an attached xaml / designer window. So must do design it all in code?

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

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

发布评论

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

评论(1

孤者何惧 2024-10-23 13:58:42

您创建一个 ResourceDictionary XAML 文件,在其中定义控件的 CustomTemplate/Style,然后合并所有Generic.xaml 字典中的此类字典。

例如,定义一个控件样式:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/client/2007" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Grid x:Name="RootElement" >
                        <ContentPresenter 
                            Content="{TemplateBinding Content}" 
                            ContentTemplate="{TemplateBinding ContentTemplate}" 
                            Foreground="{TemplateBinding Foreground}" 
                            VerticalAlignment="Center" HorizontalAlignment="Center"/>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

在您的 Generic.xaml 中:

<ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="MyButtonStyle.xaml"/>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

结果应该是 Button 类型的控件现在以指定的样式呈现,即使在 IDE 中也是如此设计师。

You create a ResourceDictionary XAML file in which you define the CustomTemplate/Style for a control, and then merge all such dictionaries in the Generic.xaml dictionary.

For instance, define a control style:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/client/2007" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Grid x:Name="RootElement" >
                        <ContentPresenter 
                            Content="{TemplateBinding Content}" 
                            ContentTemplate="{TemplateBinding ContentTemplate}" 
                            Foreground="{TemplateBinding Foreground}" 
                            VerticalAlignment="Center" HorizontalAlignment="Center"/>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

And in your Generic.xaml:

<ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="MyButtonStyle.xaml"/>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

The result should be that controls of type Button are now rendered with the specified style, even in the IDE designer.

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