0
votes

Désactiver la sélection de choix dans une combinaison

Avec une combinaison régulière, j'utiliserais le code suivant pour désactiver le changement de sélection. XXX Pré>

Toutefois, lorsque mon ComboBox est dans un magasin de données, je ne suis pas capable d'accéder à ComboBox par nom, Et donc je ne suis pas capable d'éteindre la sélection modifiée. Comment peut désactiver Combobox CBBTestTwo comme dans le code précédent, mais à partir d'un fichier de données dans le code suivant? P>

<StackPanel>
        <DataGrid>
            <DataGrid.Columns>
                <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox Name="CbbTestTwo" SelectionChanged="CbbTestTwo_SelectionChanged"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>
</StackPanel>


0 commentaires

3 Réponses :


-1
votes

Rechercher le contrôle Inside ListBox.Imtemplate (WPF C #) < / p>

Veuillez vous reporter à ce lien, à partir de l'extrait de code ci-dessus, une fois que vous aurez l'instance ComboBox, vous pouvez vous désabonner de l'événement.


0 commentaires

0
votes

Si je comprends bien correctement, vous cherchez à pouvoir manipuler votre ComboBox dans l'événement Selectchanged. Vous pouvez obtenir votre ComboBox comme ceci:

    private void cbTest_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                ComboBox comboBox = new ComboBox();
                if(sender is ComboBox)
                {
                    comboBox = (ComboBox)sender;
                }
//Add the treatments you want
                comboBox.Items.Clear();
                comboBox.ItemsSource = listTest;

            }


0 commentaires

0
votes

Vous voudrez peut-être utiliser plus d'approche MVVM, ce qui signifie que vous inscrivez directement sur des événements dans le code derrière la vue n'est pas la meilleure option. Dans ce cas, vous pouvez utiliser un comportement comme celui-ci.

public class ComboBoxSelectionChangedBehavior : Behavior<ComboBox>
{
    protected override void OnAttached()
    {
        base.OnAttached();
        AssociatedObject.SelectionChanged += OnSelectionChanged;
    }

    private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        // ....
    }


    protected override void OnDetaching()
    {
        base.OnDetaching();
        AssociatedObject.SelectionChanged -= OnSelectionChanged;
    }
}


0 commentaires