2010-08-03 10 views
3

Je suis en train de changer l'arrière-plan de certains éléments dans un combobox qui répondent à une conditionWPF: Change background sur certains articles de combobox

<ComboBox ItemsSource="{Binding Path=Model.Names, Mode=OneWay}" SelectedValue="{Binding Path=SelectedCompanyName}" DisplayMemberPath="Alias" /> 

La chose est que « Alias ​​» est enregistré dans deux endroits différents (dans la société et dans l'ordre) et si elles ne correspondent pas, nous voulons souligner cela.

Je veux faire quelque chose comme ceci:

<Style>... 
    <DataTrigger Binding="{Binding Path=isMismatch}" Value="True> 
     <Setter Property="Background" Value="Red" />... 

Toute aide est appréciée.

Répondre

4

Vous devez créer des modèles de données personnalisées comme ceci:

<ComboBox Width="300" Height="30" ItemsSource="{Binding Path=Model.Names, Mode=OneWay}"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <Grid x:Name="templateGrid"> 
       <TextBox Text="{Binding Name}" /> 
      </Grid> 
      <DataTemplate.Triggers> 
       <DataTrigger Binding="{Binding isMismatch}" Value="True"> 
        <Setter TargetName="templateGrid" 
          Property="Background" Value="Red" />   
       </DataTrigger> 
      </DataTemplate.Triggers> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 
+0

Fonctionne bien. Le nouveau problème est que Alias ​​et IsMismatch ne sont pas au même endroit ... :) – debe

0

Si vous voulez mettre en évidence la sélection sur la base des valeurs de deux propriétés, je pense que vous pouvez utiliser un MultiValueConverter, avec un MultiBinding.