c# – 当TabControl的ItemsSource绑定到WPF中的列表时,如何设计TabPage?

c# – 当TabControl的ItemsSource绑定到WPF中的列表时,如何设计TabPage?,第1张

概述这些是我的类: class mainViewModel { public List<Foo> F { get; set; } public mainViewModel() { F=new List<Foo>() { new Foo(new Anima 这些是我的类:
class mainviewmodel    {               public List<Foo> F { get; set; }        public mainviewmodel()        {        F=new List<Foo>()              {                  new Foo(new Animal(){name = "Cat"}),new Foo(new Animal(){name = "Dog"}),new Foo(new Animal(){name = "Camel"})              };        }     }    public class Foo    {        public Animal Animal { get; set; }        public Foo(Animal animal)        {            Animal = animal;        }    }    public class Animal    {        public string name { get; set; }    }

这是我的MainWindow Xaml代码:

<TabControl ItemsSource="{Binding Path=F}">            <TabControl.ItemTemplate>                <DataTemplate>                    <TextBlock Text="{Binding Animal.name}"/>                </DataTemplate>            </TabControl.ItemTemplate>            <TabControl.ContentTemplate>              <DataTemplate>                    <TextBlock Text="Something 1"/>              </DataTemplate>            </TabControl.ContentTemplate>  </TabControl>

现在显然我将为List F中的每个项目创建一个TabControl,并且所有TabControl页面都有一个TextBlock Something 1,如下所示:

我想要的只是设计其中一个页面.比如在名为Something 3的Camel页面中添加新按钮.

解决方法 根据以上评论:

为每个Tab创建一个特定的viewmodel类:

public class Tab1: viewmodelBase{   //... functionality,propertIEs,etc}public class Tab2: viewmodelBase{   //... functionality,etc    }public class Tab3: viewmodelBase{   //... functionality,etc    }

然后为每个创建一个特定的视图(通常以UserControls的形式):

<UserControl x:Class"UserControl1" ...>   <!-- UI Elements,etc --></UserControl><UserControl x:Class"UserControl2" ...>   <!-- UI Elements,etc --></UserControl><UserControl x:Class"UserControl3" ...>   <!-- UI Elements,etc --></UserControl>

然后为每个viewmodel类型创建DataTemplates并将这些UserControl放入其中:

编辑:这些应该在Application.Resources下的App.xaml中定义:

<Application ....>    <Application.Resources>        <DataTemplate DataType="{x:Type local:viewmodel1}">            <local:UserControl1/>        </DataTemplate>        <DataTemplate DataType="{x:Type local:viewmodel2}">            <local:UserControl2/>       </DataTemplate>       <DataTemplate DataType="{x:Type local:viewmodel3}">           <local:UserControl2/>      </DataTemplate>   </Application.Resources></Application>

最后,放一个ObservableCollection< viewmodelBase>在您的主viewmodel中添加以下项:

public ObservableCollection<viewmodelBase> Tabs {get;set;} //Representing each Tab Itempublic Mainviewmodel() //Constructor{    Tabs = new ObservableCollection<viewmodelBase>();    Tabs.Add(new viewmodel1());    Tabs.Add(new viewmodel2());    Tabs.Add(new viewmodel2());}
总结

以上是内存溢出为你收集整理的c# – 当TabControl的ItemsSource绑定到WPF中的列表时,如何设计TabPage?全部内容,希望文章能够帮你解决c# – 当TabControl的ItemsSource绑定到WPF中的列表时,如何设计TabPage?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1251606.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存