Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在选项卡中处理数据模板?_C#_Wpf_Visual Studio 2010_Devexpress_Tabcontrol - Fatal编程技术网

C# 如何在选项卡中处理数据模板?

C# 如何在选项卡中处理数据模板?,c#,wpf,visual-studio-2010,devexpress,tabcontrol,C#,Wpf,Visual Studio 2010,Devexpress,Tabcontrol,我的名字是安德里亚,这是我的第一篇帖子 作为一个简单的读者,你经常帮助我,现在我写作是因为我想要直接的支持 我必须创建一个选项卡控件,使用“添加选项卡”按钮,我必须添加一个具有相同内容的新选项卡。 到目前为止,一切都很好 在选项卡中,我有一个文本编辑和一个组合框。 我的问题有两个: 1如何为我添加的每个选项卡加载组合框的内容? 2每次我写入的文本和“编辑”选项卡覆盖时,也会编辑其他选项卡的文本 代码如下: Xaml中的数据模板: <DataTemplate x:Key="tabItem

我的名字是安德里亚,这是我的第一篇帖子

作为一个简单的读者,你经常帮助我,现在我写作是因为我想要直接的支持

我必须创建一个选项卡控件,使用“添加选项卡”按钮,我必须添加一个具有相同内容的新选项卡。 到目前为止,一切都很好

在选项卡中,我有一个文本编辑和一个组合框。 我的问题有两个:

1如何为我添加的每个选项卡加载组合框的内容? 2每次我写入的文本和“编辑”选项卡覆盖时,也会编辑其他选项卡的文本

代码如下:

Xaml中的数据模板:

  <DataTemplate x:Key="tabItemContent">

            <dxlc:LayoutGroup Orientation="Vertical" Header="Target Description" IsCollapsible="True">
                <!--Name-->
                <dxlc:LayoutItem>
                    <dxlc:LayoutGroup Orientation="Horizontal" ItemSpace="4" >
                        <dxlc:LayoutItem Label="Name" Margin="10">
                            <dxe:TextEdit x:Name="TextEdit_NameTarget"/>
                        </dxlc:LayoutItem>
                    </dxlc:LayoutGroup>
                </dxlc:LayoutItem>
                <!--Nation e Label-->
                <dxlc:LayoutItem>
                    <dxlc:LayoutGroup Orientation="Horizontal" ItemSpace="12" >
                        <dxlc:LayoutItem Label="Nation"  Margin="10">
                            <ComboBox x:Name="ComboBox_TargetNazione" />
                        </dxlc:LayoutItem>                           
                    </dxlc:LayoutGroup>
                </dxlc:LayoutItem>                   
            </dxlc:LayoutGroup>
        </DataTemplate>
下面是将列表加载到组合框中的位置:

private void LoadComboBoxNation()
    {

        ComboBox_TargetNazione.ItemsSource =
          ManagementTriple.Istance().get_Nation_byTipologyAndContext(ComboBox_TypologyScenario.SelectedItem.ToString(),
          ComboBox_ContextScenario.SelectedItem.ToString());

        controlloselecteditem(ComboBox_SourceNazione.SelectedItem.ToString());

        controlloselecteditem(ComboBox_TargetNazione.SelectedItem.ToString());
    }

感谢大家对我的帮助。

数据模板需要一个简单但基本的要求才能正常工作:您应该使用这种方法

理想情况下,选项卡控件应该绑定到某个ViewModel。然后,如果希望显示另一个选项卡,则应使用按钮单击调用ViewModel中的命令,然后ViewModel将向TabControl ItemsSource属性(这将是某个集合)添加另一项,新项将与相应的DataTemplate一起“自动”显示

WPF的思想是用一个更间接的代码替换视图中的所有这些命令性代码(如您发布的代码),其中您唯一担心的是在ViewModel中操作东西,然后就是“哑视图”


希望这能有所帮助,但请不要犹豫,在评论中询问更多细节。

好的,那么您的建议是改变策略?你能举个例子把我联系起来吗?在这类方法方面经验不足。谢谢不幸的是,这不是一个简单的主题(我花了几个月的时间才完全理解MVVM架构)。但是如果你用谷歌搜索“MVVM”、“DataTemplates”、“DataBinding”,最重要的是“ViewModel First”,你会得到一些很好的例子。
private void LoadComboBoxNation()
    {

        ComboBox_TargetNazione.ItemsSource =
          ManagementTriple.Istance().get_Nation_byTipologyAndContext(ComboBox_TypologyScenario.SelectedItem.ToString(),
          ComboBox_ContextScenario.SelectedItem.ToString());

        controlloselecteditem(ComboBox_SourceNazione.SelectedItem.ToString());

        controlloselecteditem(ComboBox_TargetNazione.SelectedItem.ToString());
    }