我的名字是Andrea这是我的第一篇文章。
你经常帮我作为一个简单的读者,现在我写作是因为我想直接支持。
我必须创建一个标签控件并使用一个按钮"添加标签"我必须添加一个包含相同内容的新标签。 到目前为止一切都很好。
在Tab中我有一个textedit和一个组合框。 我的问题是两个:
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>
C#:
private void Button_Click_Add(object sender, RoutedEventArgs e)
{
DataTemplate tabItemDataTemplate = this.TryFindResource("tabItemContent") as DataTemplate;
DXTabItem tabItem = new DXTabItem();
tabItem.Header = "New Tab";
tabItem.ContentTemplate = tabItemDataTemplate;
tabControl_Targets.Items.Add(tabItem);
}
这里是将列表加载到组合框中的位置:
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());
}
谢谢大家的帮助。
答案 0 :(得分:0)
DataTemplates需要一个简单但基本的要求才能正常工作:您应该使用ViewModel-First方法。
理想情况下,您的制表符控件应该绑定到某些ViewModel。然后,如果您想要显示另一个选项卡,则应该使用按钮单击在ViewModel中调用 Command ,然后ViewModel会将另一个项添加到TabControl ItemsSource属性(这将是一些集合) ,新项目将与其各自的DataTemplate“自动”显示。
WPF的想法是用一个更间接的代码替换视图中的所有这些命令式代码(就像你发布的代码一样),你唯一的担心是操纵ViewModel中的东西,然后是“Dumb View”
希望这会有所帮助,但请不要犹豫,在评论中询问其他详细信息。