从自定义控件引用子项

Posted

技术标签:

【中文标题】从自定义控件引用子项【英文标题】:Referencing a children from a custom control 【发布时间】:2019-01-22 15:33:21 【问题描述】:

我正在通过在ContentView 中组合一些元素来创建自定义控件。 ContentView 有另一个嵌套的ContentView,称为MainBody。 当我使用控件时,我将如何访问和设置MainBody。这就是我想要实现的目标:

...
<controls.ControlName>
    <controls.ControlName.MainBody>
        <ContentView>
            ...
        </ContentView>
    </controls.ControlName.MainBody>
</controls.ControlName>
...

【问题讨论】:

【参考方案1】:

其实这是我想出来的:

public static readonly BindableProperty MainContentProperty = BindableProperty.Create("MainContent", typeof(View), typeof(DropShadowPanel), default(View));

    public View MainContent
    
        get  return (View)GetValue(MainContentProperty); 
        set  SetValue(MainContentProperty, value); OnPropertyChanged(); 
    

    public DropShadowPanel ()
    
        InitializeComponent ();
        PropertyChanged += DropShadowPanel_PropertyChanged;
    

    private void DropShadowPanel_PropertyChanged(object sender, PropertyChangedEventArgs e)
    
        if(e.PropertyName == MainContentProperty.PropertyName)
        
            mainContent.Content = MainContent;
        
    

而且它有效。

【讨论】:

以上是关于从自定义控件引用子项的主要内容,如果未能解决你的问题,请参考以下文章

从自定义控件的模板部分中删除事件处理程序

如何从自定义用户控件 WPF、C# 中的枚举自定义属性中获取值?

为啥我的自定义用户控件的子项没有被初始化?

如何引用VB6.0编 用户自定义控件

Android - 触发 MainActivity 从自定义视图中执行某些操作

WebResource-asp.net自定义控件引用外部资源方法