我有问题将数据放入wpf TabItem上的控件。 我已经在xaml中定义了几个DataTemplates。这里是其中的一个:问题绑定数据到动态创建的WPF TabItem控件
<Window.Resources>
...
<DataTemplate x:Key="memoTab">
<TextBox Name="memoTextBox" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" AcceptsReturn="True" />
</DataTemplate>
...
</Window.Resources>
我那么后面在代码中创建新的标签如下:
TabItem tab = new TabItem();
tab.Header = "Memo";
tab.ContentTemplate = (DataTemplate)FindResource("memoTab");
tab.ApplyTemplate();
System.Windows.Controls.TextBox tb = (System.Windows.Controls.TextBox)tab.Template.FindName("memoTextBox", tab);
if (tb != null) tb.DataContext = memo; //string memo is created earlier as linq query
tabControl.Items.Add(tab); //tabControl is xaml defined
问题是,TB总是空的,因此没有数据出现在文本框(文本框本身显示在选项卡中,它是功能)
我不使用xaml在tabControl中创建选项卡(除了第一个,它不使用DataTemplate并且很好)是因为它们是在运行时由用户添加和删除的。
任何想法?
只是更改为ContentTemplate.FindName不工作 - 它给了异常:此操作只适用于具有应用此模板元素。 – vdmpal 2010-11-15 15:44:53
@vdmpal编辑答案,查看完整示例的链接,我用你的类型替换了变量。 – 2010-11-15 16:10:34
嗯......当我尝试这个时,ContentPresenter的ContentTemplate始终为空。我甚至试图通过添加Loaded事件并在其中运行此代码来推迟它,但没有区别。 – vdmpal 2010-11-15 19:26:31