2011-09-19 5 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でXAMLでこのメンバーをバインドします

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

そして、私はまたECaseにaccordionItemのDataContextのを割り当てる:

item.DataContext = Case; 

そして、まだCaseNameがに表示されていませんアコーディオンアイテムのヘッダー。

どのような考えですか?

答えて

2

代わりに、ヘッダープロパティにオブジェクトを割り当てる必要があります。

が働い

item.Header = Case; 
+1

をお試しください!ありがとうございました – Gil

関連する問題