Converter 可以了解家长控制吗?
Can Converter know about parent control?
我有一个 Prism
核心 MVVM 应用程序,它重用了一些视图,例如 CustomerView。最初,CustomerView 在 MainWindowView 中显示为 'tile'。当用户单击它时 - 使用我的 WindowService 在新 Window
中打开该 CustomerView 的新实例。 CustomerView 有一个菜单。我想要的:如果 CustomerView 显示在 MainWindowView 的 'tile' - 菜单应该被隐藏;如果在另一个不同的 Window
- 菜单应该是可见的。目前,我已经通过代码隐藏完成了这项工作。是否可以有一个 Converter
,它可以判断 CustomerView 是 MainWindowView 的一部分,还是其他 Window
的一部分?
您可以绑定到 CustomerView
本身并使用尝试在可视化树中找到父 MainWindowView
的辅助方法:
public static T FindParent<T>(DependencyObject dependencyObject) where T : DependencyObject
{
var parent = VisualTreeHelper.GetParent(dependencyObject);
if (parent == null) return null;
var parentT = parent as T;
return parentT ?? FindParent<T>(parent);
}
用法:
MainWindowView parent = FindParent<MainWindowView>(customerView);
if (parent != null)
//MainWindowView found...
我有一个 Prism
核心 MVVM 应用程序,它重用了一些视图,例如 CustomerView。最初,CustomerView 在 MainWindowView 中显示为 'tile'。当用户单击它时 - 使用我的 WindowService 在新 Window
中打开该 CustomerView 的新实例。 CustomerView 有一个菜单。我想要的:如果 CustomerView 显示在 MainWindowView 的 'tile' - 菜单应该被隐藏;如果在另一个不同的 Window
- 菜单应该是可见的。目前,我已经通过代码隐藏完成了这项工作。是否可以有一个 Converter
,它可以判断 CustomerView 是 MainWindowView 的一部分,还是其他 Window
的一部分?
您可以绑定到 CustomerView
本身并使用尝试在可视化树中找到父 MainWindowView
的辅助方法:
public static T FindParent<T>(DependencyObject dependencyObject) where T : DependencyObject
{
var parent = VisualTreeHelper.GetParent(dependencyObject);
if (parent == null) return null;
var parentT = parent as T;
return parentT ?? FindParent<T>(parent);
}
用法:
MainWindowView parent = FindParent<MainWindowView>(customerView);
if (parent != null)
//MainWindowView found...