2011-09-19 41 views
1

我有一个手风琴控制,这里的XAML:Silverlight中绑定一个HeaderTemplate中

<UserControl x:Class="CasesPage" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"  
mc:Ignorable="d" 
d:DesignHeight="1050" d:DesignWidth="1600"> 
<UserControl.Resources> 
    <DataTemplate x:Key="AccordionItemHeaderTemplate"> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="Auto"/> 
      </Grid.ColumnDefinitions> 
      <TextBlock Text="{Binding CaseName}"/> 
     </Grid> 
    </DataTemplate> 
</UserControl.Resources> 
<Border Margin="20,20,0,20" Background="White" BorderBrush="Transparent" BorderThickness="0" CornerRadius="10"> 
<toolkit:Accordion Margin="30" Name="CasesListAccordion" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ItemContainerStyle="{StaticResource AccordionContainerStyleLawBot}" BorderBrush="{x:Null}" SelectionMode="ZeroOrOne" SelectionSequence="CollapseBeforeExpand" Style="{StaticResource NewAccordionStyle}" 
        ItemsSource="{Binding}" AccordionButtonStyle="{StaticResource AccordionButtonStyleNotEdited}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Foreground="Black" Background ="White" 
     SelectedItemsChanged="CasesListAccordion_SelectedItemsChanged"> 
    </toolkit:Accordion> 
</Border> 

在我的用户控制的资源,我也有,我想在每一个手风琴用于HeaderTemplate中数据模板项目。

手风琴项目从代码填充,我这样做是因为我动态地接收它们。

下面的代码:

foreach(ECase Case in Cases) 
     { 
      //Create an accordion item 
      AccordionItem item = new AccordionItem(); 
      item.Tag = Case; 
      item.DataContext = Case; 
      item.HeaderTemplate = (DataTemplate)this.Resources["AccordionItemHeaderTemplate"]; 



     } 

类ECase有一个成员叫CaseName。

<DataTemplate x:Key="AccordionItemHeaderTemplate"> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="Auto"/> 
      </Grid.ColumnDefinitions> 
      <TextBlock Text="{Binding CaseName}"/> 
     </Grid> 
    </DataTemplate> 

而且我也分配accordionItem的的DataContext到ECase:

item.DataContext = Case; 

而且仍然CaseName不显示 我在DataTemplate中的文本块的XAML该成员绑定手风琴项目的标题。

有什么想法?

回答

2

您应该将对象分配给Header属性。

尝试

item.Header = Case; 
+1

这工作!谢谢 – Gil