我在寻找一个提示或只是一个方向来设计所需的结构,因为它有点棘手。我正在使用MVVM和Prism。
我有2个区域,一个具有2个按钮和一个tabcontrol区域。单击button1后,我想将3个视图作为选项卡注入tab控件中。单击button2之后,我想从button1中删除选项卡(但保留数据在后面),然后再次将3个视图作为选项卡注入tabcontrol中。这是棘手的部分:-),它应该动态发生,并且button1和button2的3个视图中的2个基于相同的视图/视图模型。
我对我能得到的一切表示感谢:-D
答案 0 :(得分:1)
您应该能够使用ViewModel first方法来执行此操作。这是一种快速而肮脏的方法,可以根据自己的需要进行清理。
View / ViewModel结构:
View1-ViewModel1:IViewModel
View2-ViewModel2:IViewModel
View3-ViewModel3:IViewModel
IViewModel需要“内容”字符串属性
MainWindow.xaml
xpath='//*[@id="peoplegrid"]/div['+str(i)+']/div[1]/a'
MainViewModel.cs
<Window x:Class="SFQ1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:SFQ1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.DataContext>
<local:MainViewModel/>
</Window.DataContext>
<Window.Resources>
<DataTemplate DataType="{x:Type local:ViewModel1}">
<local:View1/>
</DataTemplate>
<DataTemplate DataType="{x:Type local:ViewModel2}">
<local:View2/>
</DataTemplate>
<DataTemplate DataType="{x:Type local:ViewModel3}">
<local:View3/>
</DataTemplate>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<TabControl Grid.Row="0" ItemsSource="{Binding VmObservable}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Content}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<ContentControl Content="{Binding}">
</ContentControl>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
<Button Grid.Row="1" Margin="10,0,0,0" Width="100" Content="1"
HorizontalAlignment="Left" Command="{Binding SetOneCommand}"/>
<Button Grid.Row="1" Margin="130,0,0,0" Width="100" Content="2"
HorizontalAlignment="Left" Command="{Binding SetTwoCommand}"/>
</Grid>
</Window>