ItemContainerStyle重用silverlight 5

时间:2013-12-17 06:14:23

标签: silverlight xaml

我有一个带有复选框的控制模板:

 <Style x:Key="GeneralChkbxItemStyle" TargetType="ListBoxItem">   
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListBoxItem">
                    <Grid x:Name="RootElement">
                        <CheckBox ClickMode="Press" Content="{Binding Path=Name}"
                              IsChecked="{Binding Path=IsSelected, Mode=TwoWay}" />
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter
    </Style> 

我在组合框和列表框中使用它,如此ItemContainerStyle =“{StaticResource GeneralChkbxItemStyle。当数据源具有名为Name的属性时,它非常有用。

但我想知道如何将此模板与其他没有name属性的类的数据源一起使用。它可能具有属性name2或名称3等,具体取决于数据源。

有什么建议吗?感谢。

2 个答案:

答案 0 :(得分:1)

在你的模板中:

 <CheckBox ClickMode="Press"
           Content="{TemplateBinding Content}"
           ContentTemplate="{templateBinding ContentTemplate}"
           IsChecked="{Binding Path=IsSelected, Mode=TwoWay}" />

然后在你看来:

<ListBox DisplayMemberPath="Name"..../>
<!--OR-->
<ListBox DisplayMemberPath="Name2"..../>
<!--OR-->
......

答案 1 :(得分:1)

您可以使用隐式数据模板。

    <DataTemplate DataType="MyApp:Person">
        <TextBlock Text="{Binding Name}" />
    </DataTemplate>

    <DataTemplate DataType="MyApp:Booking">
        <TextBlock Text="{Binding Id}" />
    </DataTemplate>

    <Style x:Key="GeneralChkbxItemStyle"
           TargetType="ListBoxItem">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListBoxItem">
                    <Grid x:Name="RootElement">
                        <CheckBox ClickMode="Press"
                                  Content="{Binding .}"
                                  IsChecked="{Binding Path=IsSelected, Mode=TwoWay}" />
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>