2011-12-16 2 views
4

У меня есть 10 элементов управления ComboBox, которые будут использовать тот же шаблон элемента (изображение и текстовый блок) и те же элементы, поэтому я хочу определить этот шаблон в более глобальном масштабе (уровень страницы) , Это то, что я сделал до сих пор:ComboBox.ItemTemplate для нескольких элементов управления

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

Но это не работает. Любая помощь?

ответ

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}"/> 

Или, если все ComboBoxes на странице должны иметь этот стиль:

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

и затем:

<ComboBox /> 
+0

Вы рок! Благодаря! –