我有一组 ViewModels,它们使用一种样式呈现为选项卡,以提取相关内容以显示在选项卡上:
public class TabViewModel : DependencyObject
{
public object Content
{
get { return (object)GetValue(ContentProperty); }
set
{
SetValue(ContentProperty, value);
}
}
}
这是 TabControl:
<TabControl
ItemsSource={Binding MyCollectionOfTabViewModels}"
ItemContainerStyle="{StaticResource TabItemStyle}" />
这是风格
<Style TargetType="TabItem" x:Key="TabItemStyle">
<Setter Property="Content" Value="{Binding Content}"/>
</Style>
我们正在创建一个用户控件的实例并将 TabViewModel 的“内容”属性设置为这样,以便用户控件显示在 TabItem 的内容区域中。
MyCollectionOfViewModels.Add(new TabViewModel()
{
Content = new MyUserControl();
});
我的问题是,我想允许添加到 TabViewModel 的 Content 属性的 MyUserControl(或其任何子控件)被允许引发 TabViewModel 处理的事件。
有人知道我会怎么做吗?
我们已经尝试使用 RoutedEvents 和 RoutedCommands,但无法让任何东西 100% 工作并使其与 MVVM 兼容。我真的认为这可以通过 RoutedEvent 或 RoutedCommand 来完成,但我似乎无法让它工作。
注意:我已经删除了一些与 Prism 相关的特定代码,但如果您想知道为什么我们会做一些如此愚蠢的事情,那是因为我们试图通过使用 Prism 的 RegionManager 来保持与控制无关。