MVVM-WPF桌面
刚开始学习MVVM。我有一个tabcontrol,可以在其中添加相同视图/页面的多个实例MVVM-WPF桌面,wpf,views,wvvm,Wpf,Views,Wvvm,刚开始学习MVVM。我有一个tabcontrol,可以在其中添加相同视图/页面的多个实例 Dim tb As New UXTabItem tb.Header = "Childrens" tb.Name = "tab" & itrt itrt = itrt + 1 tb.Source = New Uri("/Views/childrens.xaml", UriKind.Relative) UXTabControl1.Items.Add(tb)
Dim tb As New UXTabItem
tb.Header = "Childrens"
tb.Name = "tab" & itrt
itrt = itrt + 1
tb.Source = New Uri("/Views/childrens.xaml", UriKind.Relative)
UXTabControl1.Items.Add(tb)
由于同一视图中的每个视图将处理不同的数据,但由于uri是相同的,因此所有选项卡都使用相同的视图填充,并且更改反映在每个选项卡上。但事实并非如此。我应该为每一个使用单独的viewmodel吗?任何示例都会非常有用。MVVM的主要目标/优点之一是不在代码中创建WPF UI对象 您应该填充视图模型对象的集合,并将您在XAML中定义的
TabControl
的ItemsSource
绑定到它。您应该为这些对象的数据类型定义一个DataTemplate
,并将它们的XAML放在其中,而不是在运行时加载它
TabControl
有点棘手,因为它使用了两个模板:ItemTemplate
用于定义选项卡的外观,ContentTemplate
用于定义选项卡项内容的外观。很常见的情况是:
<TabControl ItemsSource="{Binding MyItems}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Text}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding}"/>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
它使用视图模型上的
Text
属性填充选项卡,并且使用资源字典中与视图模型类型匹配的任何模板填充选项卡项的内容。MVVM的主要目标/优点之一是不在代码中创建WPF UI对象
您应该填充视图模型对象的集合,并将您在XAML中定义的TabControl
的ItemsSource
绑定到它。您应该为这些对象的数据类型定义一个DataTemplate
,并将它们的XAML放在其中,而不是在运行时加载它
TabControl
有点棘手,因为它使用了两个模板:ItemTemplate
用于定义选项卡的外观,ContentTemplate
用于定义选项卡项内容的外观。很常见的情况是:
<TabControl ItemsSource="{Binding MyItems}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Text}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding}"/>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
它使用视图模型上的
Text
属性填充选项卡,并且选项卡项的内容与资源字典中与视图模型类型匹配的任何模板都匹配。我将在父视图模型中有一个observeCollection选项卡
,并将TabControl的ItemSource绑定到该选项卡项。每个选项卡都有自己的TabViewModel实例,因此添加一个新选项卡意味着向ParentViewModel中的Tabs
集合添加一个新的TabViewModel
TabViewModel将包含诸如标题
或Uri
之类的属性,这些属性将绑定到相应位置的UI。每个TabViewModel都可以使用相同的视图绘制,但是对象中的数据对于每个选项卡都是不同的
My ParentViewModel还将包含一个定义所选选项卡的
选项卡索引
属性我将在我的父视图模型中有一个ObservableCollection选项卡
,并将选项卡控件的ItemSource绑定到该选项卡。每个选项卡都有自己的TabViewModel实例,因此添加一个新选项卡意味着向ParentViewModel中的Tabs
集合添加一个新的TabViewModel
TabViewModel将包含诸如标题
或Uri
之类的属性,这些属性将绑定到相应位置的UI。每个TabViewModel都可以使用相同的视图绘制,但是对象中的数据对于每个选项卡都是不同的
My ParentViewModel还将包含一个
TabIndex
属性,该属性定义选择哪个选项卡这不是小事,依我看,Rachel和Robert都是对的
将此任务视为管理“工作空间”的任务之一,每个工作空间由一个选项卡控件表示
贝里尔这不是小事,依我看,雷切尔和罗伯特都是对的 将此任务视为管理“工作空间”的任务之一,每个工作空间由一个选项卡控件表示
Berryl虽然这是一个第三方组件,但我认为是UXTabItem。Source属性主要用于静态XAML内容,如客户信息、联系我们信息等?您是否试图实现显式实例