【问题标题】:WPF create a custom controlWPF 创建自定义控件
【发布时间】:2020-04-02 10:08:37
【问题描述】:

我想在 WPF 中构建一个自定义控件,但我不知道该使用什么。我想实现以下目标:

控制草图

所以有两个不同的文本块(标题和提示)以及图标的路径。

我需要在一个视图中多次使用此控件,但 itemssource 不是列表(因此我无法获取 itemscontrol 和数据模板)。

我将如何做到最好?

【问题讨论】:

    标签: c# .net xaml


    【解决方案1】:
    1. 在 Visual Studio 中有一个 WPF 自定义控件库的模板(以及一个 WPF 自定义控件的模板)
    2. 我想您习惯于创建 XAML,因此不会覆盖标记
    3. 要允许从 XAML 将数据项绑定到您的控件,您需要在控件代码中创建依赖属性:
         public string Header {
            get => (string) GetValue(HeaderProperty);
            set => SetValue(HeaderProperty, value);}
        public static readonly DependencyProperty HeaderProperty = // note naming - <PropName>+Property
            DependencyProperty.Register(nameof(Header), typeof(string), typeof(YourControl), new FrameworkPropertyMetadata(""));
    

    对您要公开的每个属性重复此代码

    这样您就可以使用&lt;YourControl Header="text" /&gt;&lt;YourControl Header={Binding SomeProp} /&gt; 在XAML 中绑定属性

    1. 创建所有需要的道具后,您可以在控件的 XAML 中轻松地绑定到它们:
    <TextBlock Text={Binding Header} />
    

    【讨论】:

    • 控件xaml内部的绑定是如何工作的?
    • @RobertM 我已经更新了答案。通常 - 与在其他地方使用绑定的方式相同,一旦创建 DependencyProperties,Intellisense 将在您编辑 XAML 时将它们添加到提示中
    猜你喜欢
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    相关资源
    最近更新 更多