【问题标题】:Data Binding with Silverlight accordion Control使用 Silverlight 手风琴控件进行数据绑定
【发布时间】:2011-01-08 01:53:11
【问题描述】:

我在 ChildWindow 中有 Silverlight Accordion 控件,并通过以下方式对其进行了自定义

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

现在我的 Chilwindow.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(header Template 中的 TextBlock) 与 FirstName 和 _contenttext(TextBlock in Content Template) 与 LastName 绑定。

请帮我做这件事。我需要你的帮助。

谢谢 拉尼

【问题讨论】:

  • 欢迎来到 SO,请花几分钟时间阅读常见问题解答和简单的 Markdown 文档(当您编辑问题时,其摘要位于页面右侧)。
  • “Setter”类型不支持直接内容。这里的解决方案不起作用。

标签: silverlight data-binding silverlight-3.0 accordion silverlight-toolkit


【解决方案1】:

首先,TargetType 指向 AccordionItem 并且您尝试在 Accordion 元素本身上使用该样式。这永远不会奏效。为了使其工作,您需要创建两种样式,一种用于 Accordion 本身,另一种用于您在手风琴样式中引用的 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>

【讨论】:

    【解决方案2】:

    为什么不直接在 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> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-10
      相关资源
      最近更新 更多