Ce que j'essaie de faire: J'ai une liste de profils de personnes en arrière-plan que j'utilise avec ma zone de liste déroulante. Le déclencheur consiste à changer l'arrière-plan en fonction du sexe de la personne (booléen Role.IsFemale). Lorsque je gère le SelectionChangedEvent dans le code, je peux voir que SelectedValue est vrai ou faux. Je pourrais maintenant changer l'arrière-plan directement ou changer un dependencyProperty auquel le usercontrol lui-même pourrait écouter et changer l'arrière-plan lorsqu'il est déclenché. Cependant, ce que j'essaie est d'utiliser juste XAML pour y parvenir, mais rien ne se passe lorsque j'utilise le code ci-dessous ...Modification de l'arrière-plan UserControl basé sur SelectedValue de la zone de liste déroulante
<UserControl ...
MinHeight="100" MinWidth="100" x:Name="Crtl">
<UserControl.Resources>
<SolidColorBrush x:Key="windowBGBrush1" Color="Green"/>
<SolidColorBrush x:Key="windowBGBrush2" Color="Red"/>
</UserControl.Resources>
<UserControl.Style >
<Style TargetType="{x:Type Control}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=SelectedValue, ElementName=cbProfiles}" Value="False">
<Setter Property="Background" Value="{DynamicResource windowBGBrush1}"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=SelectedValue, ElementName=cbProfiles}" Value="True">
<Setter Property="Background" Value="{DynamicResource windowBGBrush2}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</UserControl.Style>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="20*"/>
<RowDefinition Height="80*" />
</Grid.RowDefinitions>
<ComboBox Name="cbProfiles" Grid.Row="0" ItemsSource="{Binding}" DisplayMemberPath="Role.RoleID" SelectedValuePath="Role.IsFemale"/>
<StackPanel Grid.Row="1" x:Name="spFileInfo" DataContext="{Binding ElementName=cbProfiles, Path=SelectedItem}">
<TextBlock>Selected:</TextBlock>
<TextBox x:Name="tbFileFolder" Width="Auto" Height="Auto" Text="{Binding Path=Role.RoleID}"/>
</StackPanel>
</Grid>
Ok, je l'ai essayé moi-même dans un nouveau projet et j'ai directement ajouté mon code à la fenêtre principale: ça marche, l'arrière-plan change! Avant d'utiliser un UserControl et ajouté ce contrôle à la fenêtre. Je vois le contrôle et je peux l'utiliser, mais le fond ne change pas. Quelqu'un peut-il expliquer ce comportement? Cela pourrait m'intéresser, car je développe très souvent des UserControls que je peux réutiliser dans différents projets ... –
Quelque chose se gâte avec ce UserControl alors, parce que j'ai effectivement testé votre Xaml dans un de mes projets, dans un UserControl – Thomas