用于多个控件的ComboBox.ItemTemplate

时间:2011-12-16 11:48:42

标签: silverlight xaml combobox datatemplate itemtemplate

我有10个ComboBox控件,它们将使用相同的项目模板(图像和文本块)以及相同的项目,因此我想在更全局的范围内(页面级别)定义此模板。这就是我到目前为止所做的:

<UserControl.Resources>
     <DataTemplate x:Name="CBItem">
          <StackPanel Orientation="Horizontal">
              <Image Source="{Binding ImageSource}"></Image>
              <TextBlock Text="{Binding TextLabel}"></TextBlock>
          </StackPanel>
     </DataTemplate>
</UserControl.Resources>

问题是我不知道如何在以下10个ComboBox控件中使用此资源。我尝试过像

这样的东西
        <ComboBox Height="25">
            <ComboBox.ItemTemplate>
                <DataTemplate x:Name="{StaticResource CBItem}"></DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>

但它不起作用。有什么帮助吗?

1 个答案:

答案 0 :(得分:7)

<ComboBox Height="25" ItemTemplate="{StaticResource CBItem}"/>

或者更好,也创建一种风格:

<Style x:Key="cmbStyle" TargetType="ComboBox">
    <Setter Property="ItemTemplate" Value="{StaticResource CBItem}" />
    <Setter Property="Height" Value="25"/>
</Style>

然后:

<ComboBox Style="{StaticResource cmbStyle}"/>

或者,如果页面中的所有组合框都应具有此样式:

<Style TargetType="ComboBox">
    <Setter Property="ItemTemplate" Value="{StaticResource CBItem}" />
    <Setter Property="Height" Value="25"/>
</Style>

然后:

<ComboBox />