复杂的自定义控件和属性可见性

本文关键字:属性 可见性 自定义控件 复杂 | 更新日期: 2023-09-27 18:14:35

我正在开发一个自定义WPF控件("multi selector")。我给我的用户ItemsSource属性绑定的目的,但在内部我使用ItemWrappers集合像这样:

<UserControl x:Class="TFSControls.MultiSelectorControl.MultiSelectorControl">
    <ItemsControl Name="ItemsPresenter" ItemsSource="{Binding ItemWrappers}">
        ...
    </ItemsControl>
</UserControl>

问题是,为了使这个绑定工作,ItemWrappers属性必须是公共的。我很乐意使用internal,因为控件位于其自己的程序集中。

实现这一点最简单的方法是什么?

我所知道的唯一解决方案是子类ItemsControl在我的程序集,但这似乎不正确-我不需要自定义行为,只是希望这个属性是内部/保护。

复杂的自定义控件和属性可见性

属性必须是公共的,但对象本身可以不是。因此,作为另一种可能的解决方案,您可以将此属性封装在另一个类中,在控件中创建该类的私有实例并绑定到它。

您可以将ItemWrappers设置为只读依赖属性