我一直在调整Josh Smith's MVVM Demo app以满足我的要求。
我在大部分时间都取得了成功。现在,我想在此应用程序的文件菜单项中添加一个功能“打印”(类似于任何应用程序中存在的打印功能)。由于我可以在此应用程序中打开多个选项卡,因此当用户单击“打印”时,如何知道哪个选项卡(更具体的哪个工作区)处于活动状态?下面的代码显示了在DemoApp中使用TabControl的DataTemplate。
非常感谢任何帮助/想法。
<DataTemplate x:Key="WorkspacesTemplate">
<TabControl
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource ClosableTabItemTemplate}"
Margin="4"
/>
答案 0 :(得分:0)
首先,您的DataContext是错误的,您的DataContext应该是一个ViewModel,您将ItemsSource绑定到ObservableCollection属性。 E.g。
<TabControl
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding Tabs}"
SelectedItem={Binding SelectedTab}
ItemTemplate="{StaticResource ClosableTabItemTemplate}"
Margin="4"
/>
你在哪里
public class MainViewModel
{
public ObservableCollection<TabViewModel> Tabs { get; set; }
public TabViewModel SelectedTab { get; set; }
}
在后面的窗口代码中,你在构造函数中应该拥有的只是
public MainView()
{
this.DataContext = new MainViewModel()
}
或
public MainView(MainViewModel vm)
{
this.DataContext = vm;
}