【问题标题】:Create custom control with some property set through xaml使用通过 xaml 设置的某些属性创建自定义控件
【发布时间】:2015-08-23 17:53:10
【问题描述】:

我创建了一个自定义控件,从 UserControl 派生,它有一个文本块、一个文本框和 2 个按钮,称为 PathMng。

<Grid>
    <!-- some other stuff -->
    <TextBlock Name="PathName">Name</TextBlock>
</Grid>

我正在尝试通过调用此控件的外部 xaml 设置 TextBlock 的文本

<Grid>
    <local:PathMng>NameHere</local:PathMng>
</Grid>

但我不明白如何将文本“NameHere”绑定到 TextBlock。

我尝试使用“自定义 xaml”、“模板 xaml”或可能太通用的词进行搜索,但找不到我需要的内容

提前感谢您的帮助

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    首先,为了让你更简单,设置它使用,例如:

    <local:PathMng MyText="NameHere"/>
    

    现在,在您的用户控件代码隐藏中,创建一个依赖属性:

        public string MyText
        {
            get { return (string)GetValue(MyTextProperty); }
            set { SetValue(MyTextProperty, value); }
        }
    
        public static readonly DependencyProperty MyTextProperty =
            DependencyProperty.Register("MyText", typeof(string), typeof(UserContrrol1), new PropertyMetadata(null));
    

    最后,在您的 UserControl1 XAML 中,将您的 TextBox 的 Text 属性绑定到此 DP:

    <TextBox Text="{Binding MyText, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:UserControl1}}}" />
    

    所有这些都假设您的用户控件称为 UserControl1

    【讨论】:

    • 这行得通,谢谢!但我觉得它似乎有点复杂,我认为还有其他更简单的方法
    • @user1722791 - 老兄,这很简单 - 使用 propdp sn-p 创建依赖属性。它是完全可重复使用的,可绑定的。完全是最好的方法:)
    猜你喜欢
    • 2016-11-08
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多