почему не может работать ControlTemplate? - PullRequest
0 голосов
/ 11 июня 2011

после кода:

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:

<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.

1 Ответ

0 голосов
/ 11 июня 2011

Надеюсь, я правильно понимаю, что вы спрашиваете ...

  1. Почему ((ContentControl)(tabItem.Content)).Content равно null, а
  2. Почему ((ContentControl)(((ContentControl)(tabItem)).Content)).ContentTemplate равно null,

... после первого бита C #.Ответы на оба вопроса, я думаю, имеют отношение к этой строке из вашего кода:

else
    tabItem.Content = new ContentControl { Template = controlTemplate };

Я упростил приведенные ниже абзацы, надеюсь, сохранив правильность.Кроме того, приведение tabItem к ContentControl для получения того же свойства Content только затрудняет чтение:

  1. ((ContentControl)tabItem.Content).Content равно null, поскольку вы никогда не устанавливаетеContent собственность нового ContentControl.Вы устанавливаете только свойство Template.
  2. ((ContentControl)tabItem.Content).ContentTemplate равно null по той же причине: вы не установили ContentTemplate, вы установили Template.
...