在WPF MVVM中的ViewModel中设置SelectedTab

时间:2014-03-07 22:07:39

标签: c# wpf mvvm

我有两个带网格的标签。每个标签中的网格都相同。当用户打开文件时,我希望文件的内容仅转到选定的选项卡。如何为所选选项卡设置绑定?我想我可以使用相同的视图模型。如果viewmodel SelectedTab与选项卡选择相同,则数据将在该选项卡上。

这是我的观点

<TabControl DockPanel.Dock="Left" Margin="10" SelectedIndex="{Binding SelectedIndex}">
    <TabItem Header="One">
        <views:ShowView x:Name="OneView" MaxWidth="1000"/>
    </TabItem>
    <TabItem Header="Two">
        <views:ShowView x:Name="TwoView" MaxWidth="1000"/>
    </TabItem>
</TabControl>

在我的ViewModel中我有

private int SelectedIndex { get; set; }

始终没有设置。如何让OneView和TwoView知道SelectedIndex的值是什么?

2 个答案:

答案 0 :(得分:0)

我认为ViewModel中的SelectedIndex属性是一个数字?

您无法将TabControl TabItem内容)绑定到索引,但TabControl也有{{1} }属性,所以你可以改变你的绑定:

SelectedIndex

答案 1 :(得分:0)

我按照这个回答How to create tab-able content in WPF/C#?

在ResourceDictionary

<DataTemplate x:Key="ContentTemplate" DataType="{x:Type vm:ViewModel}">
        <view:View />
 </DataTemplate>

在xaml

<TabControl DockPanel.Dock="Left" Margin="10" SelectedIndex="{Binding SelectedIndex}" 
                    ContentTemplate="{StaticResource ContentTemplate}" ItemsSource="{Binding Items}"/>

在MainWindowViewModel

  Items = new ObservableCollection<ViewModel>
                {
                    new View(0),
                    new View(1),
                    new View(2)
                };