为什么不能操作ControlTemplate
本文关键字:ControlTemplate 操作 不能 为什么 | 更新日期: 2023-09-27 17:58:49
后代码:
var roomTable = from desks in context.RoomToStandartDesks
where desks.id_room == room.id
select desks.Desk;
var tabItem = new TabItem
{
DataContext = roomTable,
Header = headerText,
};
if (controlTemplate == null)
tabItem.Content = (object)roomTable;
else
tabItem.Content = new ContentControl { Template = controlTemplate };
tabItems.Add(tabItem);
((ContentControl)(tabItem.Content)).Content
==空
((ContentControl)(((ContentControl)(tabItem)).Content)).ContentTemplate
==空
和xaml控制模板:
<ControlTemplate x:Key="MyTabItemContentTemplate">
<StackPanel>
<TextBlock Text="{Binding Path=x}"/>
<ItemsControl ItemsSource="{Binding DataContext, Converter={StaticResource KeySimplyConvert}}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas Margin="10" Background="AliceBlue" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border>
<Border.RenderTransform>
<TranslateTransform X="{Binding x, Mode=TwoWay}" Y="{Binding y, Mode=TwoWay}"/>
</Border.RenderTransform>
<Managerer:TablePanel DataContext="{Binding}" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</ControlTemplate>
为什么?A使用Silverlight 4。
我希望我能正确理解你的要求。。。
- 为什么
((ContentControl)(tabItem.Content)).Content
是null
,以及 - 为什么CCD_ 5是CCD_
在C#的第一位之后。我认为两者的答案都与你代码中的这一行有关:
else
tabItem.Content = new ContentControl { Template = controlTemplate };
我在下文中简化了副题,希望能保持正确性。此外,将tabItem
强制转换为ContentControl
以获得相同的Content
属性只会使读取变得更加困难:
((ContentControl)tabItem.Content).Content
是null
,因为您从未设置新ContentControl
的Content
属性。您只设置了Template
属性((ContentControl)tabItem.Content).ContentTemplate
是null
,原因大致相同:您没有设置ContentTemplate
,而是设置了Template