首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ItemContainerStyle重用Silverlight5

ItemContainerStyle重用Silverlight5
EN

Stack Overflow用户
提问于 2013-12-17 14:14:23
回答 2查看 94关注 0票数 0

我有一个带有复选框的控件模板,如下所示:

代码语言:javascript
复制
 <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> 

我在一个组合框和一个列表框中使用它,它提到了这样的名称:“{StaticResource GeneralChkbxItemStyle .It在数据源有一个名为Name的属性时工作得很好。

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

有什么建议吗?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-12-17 18:16:38

在您的模板中:

代码语言:javascript
复制
 <CheckBox ClickMode="Press"
           Content="{TemplateBinding Content}"
           ContentTemplate="{templateBinding ContentTemplate}"
           IsChecked="{Binding Path=IsSelected, Mode=TwoWay}" />

然后在您的视图中:

代码语言:javascript
复制
<ListBox DisplayMemberPath="Name"..../>
<!--OR-->
<ListBox DisplayMemberPath="Name2"..../>
<!--OR-->
......
票数 1
EN

Stack Overflow用户

发布于 2013-12-18 20:57:12

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

代码语言:javascript
复制
    <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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20627223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档