Coucou,

J'ai cherché quelques solution sur le net, mais aucune n'a fonctionné, je dois oublier quelque chose, c'est pourquoi je demande votre aide.
Voici mon problème :
J'ai une MainView sur laquelle j'ai placé ce ComboBox :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Model/DictionaryAltered.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>
 
<ComboBox x:Name="cbTitle"
                          Grid.Row="1" 
                          MaxDropDownHeight="260"
                          ToolTip="{Binding CurrentPersonnage.Illustrateur}"
                          Style="{DynamicResource ComboBoxStyleTitre}" 
                          ItemTemplate="{StaticResource templateComboTitre}"
                          HorizontalContentAlignment="Center"
                          VerticalContentAlignment="Center"
                          FontSize="14"
                          FontWeight="Bold"
                          Foreground="White"
                          Grid.Column="2"
                          SelectionChanged="cbTitle_SelectionChanged"
                          Margin="49,5,0,0"
                          Height="30"
                          >
                    <ComboBox.Resources>
                        <SolidColorBrush x:Key="{x:Static SystemColors.WindowBrushKey}" Color="Black" Opacity="0.3" />
                    </ComboBox.Resources>
                </ComboBox>
J'ai lié sa source coté code Behind, d'un ObservableCollection<PersonnageItem>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
cbTitle.ItemsSource = TitrePersonnage.Instance().PersonnageItems;
Son template est défini dans un ResourceDictionary :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
    <DataTemplate x:Key="templateComboTitre" > 
        <Grid Height="22">
            <Grid>
                <Grid.Background>
                    <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
                        <GradientStop Offset="0.0" Color="{Binding Faction, Converter={StaticResource FactionToColorConverter}}"/>
                        <GradientStop Offset="1.0" Color="{Binding OOF, Converter={StaticResource FactionToColorConverter}}"/>
                    </LinearGradientBrush>
                </Grid.Background>
                <TextBlock x:Name="txtPersonnageNom" VerticalAlignment="Center" Panel.ZIndex="0" Grid.Column="1" Grid.ColumnSpan="2" HorizontalAlignment="Center" Text="{Binding NomString}"></TextBlock>
            </Grid>
 
            <Grid Width="270">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="2*" />
                    <ColumnDefinition Width="2*" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <Image x:Name="imgPersonnageFaction" Margin="2" Grid.Column="0" HorizontalAlignment="Left" Source="{Binding Path=FactionImagePath}" />
                <Button x:Name="btnPersonnageFaction" Command="{Binding DataContext.SelectFactionCommand, RelativeSource={RelativeSource AncestorType=vm:MainViewModel}}" Grid.Column="1" BorderThickness="0" Background="Transparent" />
                <Button x:Name="btnPersonnageOOF" Grid.Column="2" BorderThickness="0" Background="Transparent" />
                <Image x:Name="imgPersonnageOOF" Margin="2" Grid.Column="3" HorizontalAlignment="Right" Source="{Binding Path=OOFImagePath}" />
            </Grid>
        </Grid>
    </DataTemplate>
Le problème se situe sur la commande du bouton :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<Button x:Name="btnPersonnageFaction" Command="{Binding DataContext.SelectFactionCommand, RelativeSource={RelativeSource AncestorType=vm:MainViewModel}}" Grid.Column="1" BorderThickness="0" Background="Transparent" />
Dans mon MainViewModel j'ai la commande suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
        #region Command
        private ICommand selectFactionCommand;
        public ICommand SelectFactionCommand
        {
            get
            {
                if (selectFactionCommand == null)
                {
                    selectFactionCommand = new RelayCommand(
                        param => this.SelectFaction(),
                        param => this.CanSelectFaction()
                    );
                }
                return selectFactionCommand;
            }
        }
        private bool CanSelectFaction()
        {
            return true;
        }
        private void SelectFaction()
        {
            //ToDo
        }
        #endregion
Avec une liaison entre MainView et MainViewModel dans le constructeur MainView()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
public static MainViewModel vm;
 
            vm = new MainViewModel();
            DataContext = vm;
J'ai mis un point d'arrêt sur //ToDo mais je n'atteint jamais cette partie du code lorsque je déroule le Combobox puis clic sur le bouton qui contient la commande bindé.

Merci pour votre aide à ce propos