2

ChildWindow に Silverlight アコーディオン コントロールがあり、次のようにカスタマイズしました。

<Style x:Key=itemStyle TargetType=AccordionItem>
  <Setter Porperty=HeaderTemplate>
    <DataTemplate>
      <TextBlock x:Name=_headertext/>
    </DataTemplate>
  </Setter>
</Style>

<Accordion Style"{StaticResource itemStyle}">
  <Accordion.ContentTemplate>
    <DataTemplate>
      <StackPanel>
        <CheckBox/>
        <TextBlock x:name=_contenttext/>
    </DataTemplate>
  <Accordion.ContentTemplate>
</Accordion>

これで、Chillwindow.Xaml にメソッドができました

public void  LoadItems(ObservableColection<Groups> gp)
{}

このメソッドはメインページから呼び出され、gp 値を渡します

Groups は、パブリック プロパティと Observable コレクションを持つクラスです。たとえば、

public class Groups
{
  public string FirstName{get, set;}

  public ObservableCollection<Details> details {get, set;}

  public Groups()
  {
    this.details=new ObservableCollection<Details>();
  }

}

My Details Class is as follows

public class Details
{
   public int id {get; set;}
   public string LastName{get; set;} 
   --------
   -------
}

ここで、_headertext (ヘッダー テンプレートの TextBlock) を FirstName にバインドし、_contenttext (コンテンツ テンプレートの TextBlock) を LastName にバインドする必要があります。

これを行うのを手伝ってください。あなたの助けが必要です。

ありがとうラニ

4

2 に答える 2

1

XAML でデータバインディングを直接使用しないのはなぜですか? コードでこれを行う必要はありません。

<Style x:Key=itemStyle TargetType=AccordionItem> 
  <Setter Porperty=HeaderTemplate> 
    <DataTemplate> 
      <TextBlock Text="{Binding FirstName}"/> 
    </DataTemplate> 
  </Setter> 
</Style> 

<Accordion Style"{StaticResource itemStyle}"> 
  <Accordion.ContentTemplate> 
    <DataTemplate> 
      <StackPanel> 
        <CheckBox/> 
        <TextBlock Text="{Binding LastName}"/> 
    </DataTemplate> 
  <Accordion.ContentTemplate> 
</Accordion> 
于 2010-02-24T18:50:26.110 に答える
1

まず、TargetType が AccordionItem を指しており、Accordion 要素自体でスタイルを使用しようとしています。これは決してうまくいきません。これを機能させるには、2 つのスタイルを作成する必要があります。1 つはアコーディオン自体用で、もう 1 つはアコーディオンのスタイル内で参照する AccordionItem 用です。

    <Style x:Key="itemStyle" TargetType="layoutToolkit:AccordionItem">
        <Setter Property="HeaderTemplate">
            <Setter.Value>
                <DataTemplate>
                    <TextBlock Text="{Binding Header}"/>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <Style x:Key="accordionStyle" TargetType="layoutToolkit:Accordion">
        <Setter Property="ItemContainerStyle" Value="{StaticResource itemStyle}" />
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <TextBlock Text="{Binding Content}"/>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>

次に、アコーディオン コントロールを次のように定義します。

    <layoutToolkit:Accordion Height="Auto"
                             Name="accordion1" 
                             ExpandDirection="Right" 
                             SelectionMode="One"
                             ItemsSource="{Binding}"
                             Style="{StaticResource accordionStyle}">
    </layoutToolkit:Accordion>
于 2010-08-11T15:48:35.103 に答える