Checkbox: l'événement vérifié ne se déclenche pas dans wpf

salut dans mon formulaire (adminentitylist.xaml) fichier contient le code est ci-dessous



    
        
            
        
        
            <trigger Property="IsPressed" Value="True">
                
            
            <trigger Property="IsEnabled" Value="False">
                
            
        
    

    
        
            
        
        
            <trigger Property="IsPressed" Value="True">
                
            
            <trigger Property="IsEnabled" Value="False">
                
            
        
    

        

in the above code i created the checkbox checked event Checked="chkactive_Checked"

private void chkactive_Checked(object sender, RoutedEventArgs e)
        {

        }

mais l'événement ne tire pas et je reçois une erreur est

Erreur 14 'AdminEntityList' ne contient pas de définition pour   'chkactive_Checked' et aucune méthode d'extension 'chkactive_Checked'   acceptant un premier argument de type 'AdminEntityList' pourrait être trouvé   (manque-t-il une directive using ou une référence d'assembly?)

s'il vous plaît aidez-moi avec est problème ...

0
Apparaît que le gestionnaire d'événements n'est pas câblé. Il n'est pas dans le bon code derrière. Cliquez avec le bouton droit sur le xaml et accédez au gestionnaire. Ou faites un clic droit et créez un gestionnaire.
ajouté l'auteur paparazzo, source
Rendre la méthode protégée ou publique.
ajouté l'auteur leppie, source
J'ai essayé avec public et protégé mais ça ne marchera pas ..
ajouté l'auteur trinadh, source

1 Réponses

Voici un exemple simple:



    

Codebehind:

public partial class MainWindow : Window
{
    public ViewModel vm { get; set; }

    public MainWindow()
    {
        InitializeComponent();

        vm = new ViewModel();
        this.DataContext = vm;
    }
}

ViewModel:

public class ViewModel
{
    public ICommand checkedCommand { get; set; }

    public ViewModel()
    {
        checkedCommand = new CheckedCommand(this);
    }

    public void CheckedHandler()
    {
        //todo - implement your handler
    }
}

Et bien sûr la commande Checked Unchecked:

public class CheckedCommand : ICommand
{
    private ViewModel _vm = null;
    public CheckedCommand(ViewModel _viewModel)
    {
        _vm = _viewModel;
    }

    public bool CanExecute(object parameter)
    {
        return true;
    }

    public event EventHandler CanExecuteChanged;

    public void Execute(object parameter)
    {
        _vm.CheckedHandler();
    }
}

Faites-moi savoir si vous avez besoin de plus de détails, peut-être un paramètre qui doit être envoyé à partir de la vue et reçu par le gestionnaire.

Je vois cela comme un flux facile et normal pour MVVM. Vous avez une question instance/méthode statique juste là .. essayez l'approche ci-dessus, à mon avis est effacé et vous aide à découpler les choses.

Oh, j'ai oublié de dire, Command = "{Binding checkedCommand}" , est applicable aux événements Checked et Unchecked .

Mise à jour 1

Cela peut être votre codebehind:

public partial class MainWindow : Window
{
    public bool IsChecked
    {
        get { return (bool)GetValue(IsCheckedProperty); }
        set { SetValue(IsCheckedProperty, value); }
    }

   //Using a DependencyProperty as the backing store for IsChecked.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty IsCheckedProperty =
        DependencyProperty.Register("IsChecked", typeof(bool), typeof(MainWindow), new PropertyMetadata(false, new PropertyChangedCallback(PropertyChanged)));


    private static void PropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
    {
        //textbox.ScrollToEnd(); //An object reference is required for the non-static field.

        MainWindow localWindow = (MainWindow)obj;
        Console.WriteLine(localWindow.TestString);
    }

    public string TestString { get; set; }

    public MainWindow()
    {
        InitializeComponent();

        TestString = "test";
        this.DataContext = this;
    }
 }

Et votre définition de CheckBox est la suivante:


Vous définissez fondamentalement DependencyProperty avec le nom IsChecked. Chaque fois que vous le cocher ou le décocher, la méthode de rappel définie ici sera appelée. Et peut voir un exemple sur la façon d'accéder à un champ d'instance à partir de cette méthode statique. Bonne chance!

0
ajouté
@trinadh essayer de définir cette commande dans votre codebehind ou définir DependencyProperty et gérer la méthode de rappel, lorsque la valeur change.
ajouté l'auteur Olaru Mircea, source
@trinadh Je viens de mettre à jour ma réponse avec une manœuvre de codebehind ..
ajouté l'auteur Olaru Mircea, source
ici, nous n'avons pas mis en œuvre dans un modèle MVVM donc pls aider avec une solution normale
ajouté l'auteur trinadh, source
merci, ça fonctionnait bien .... @ olaru Mircea
ajouté l'auteur trinadh, source