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