ComboBox.ItemTemplate для нескольких элементов управления - PullRequest
4 голосов
/ 16 декабря 2011

У меня есть 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 Ответ

7 голосов
/ 16 декабря 2011
<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 />
...