我有一组ViewModel,使用样式呈现为选项卡,以提取相关内容以显示在选项卡上:
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的“Content”属性设置为该实例,以便在TabItem的内容区域中显示该用户控件。
MyCollectionOfViewModels.Add(new TabViewModel()
{
Content = new MyUserControl();
});
我的问题是,我想允许添加到TabViewModel的Content属性的MyUserControl(或其任何子控件)引发TabViewModel处理的事件。 有人知道我该如何做吗? 我们尝试使用RoutedEvents和RoutedCommands进行实验,但是我们无法使其100%地工作并与MVVM兼容。 我真的认为可以使用RoutedEvent或RoutedCommand来完成此操作,但似乎我无法使其正常工作。 注意:我已删除了一些相关的Prism特定代码,但如果您想知道为什么我们会做这样的事情,那是因为我们正在尝试通过使用Prism的RegionManager来保持控件不可知性。