:
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
== null
((ContentControl)(((ContentControl)(tabItem)).Content)).ContentTemplate
== null
和xaml ControlTemplate:
<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>
为什么呢? 使用Silverlight 4。
答案 0 :(得分:0)
我希望我理解你正在问......
((ContentControl)(tabItem.Content)).Content
是null
和((ContentControl)(((ContentControl)(tabItem)).Content)).ContentTemplate
是null
,......在C#的第一位之后。我认为两者的答案都与你的代码中的这一行有关:
else
tabItem.Content = new ContentControl { Template = controlTemplate };
我以后简化了这些parantheses,希望保持正确性。此外,将tabItem
转换为ContentControl
以获取相同的Content
属性会让您更难阅读:
((ContentControl)tabItem.Content).Content
为null
,因为您从未设置新Content
的{{1}}属性。您只需设置ContentControl
属性。Template
((ContentControl)tabItem.Content).ContentTemplate
的原因基本相同:您没有设置null
,而是设置了ContentTemplate
。