从自定义控件中公开ItemContainerGenerator
的优雅方法是什么?
我的自定义控件具有ItemsSource
属性,我想访问与其外部绑定项目相对应的UIElement
。
我无权访问ItemsControl
或ItemsContainerGenerator
。我应该将ItemsControl
或ItemContainerGenerator
公开为属性,还是应该添加检索UIElement
的方法?
我需要显示所选项目附近的弹出窗口。也许弹出窗口应该是控件的一部分,那么我就不必这样做了?
答案 0 :(得分:1)
如果您希望能够访问整个子ItemsControl
,请创建一个返回它的公共只读属性。
如果您只想公开ItemContainerGenerator
,请创建一个只读属性以将其返回,例如:
public ChildItemContainerGenerator => childControl.ItemContainerGenerator;
如果公开整个ItemContainerGenerator
毫无意义,请创建一个公共方法,该方法在内部使用ItemContainerGenerator
执行您想要执行的操作。
选择所有选项的选择实际上取决于您的要求。