Страницы

Поиск по вопросам

воскресенье, 15 марта 2020 г.

WPF Interactions CallMethodAction для DataTemplate в ListCheckBox ругается на входные параметры метода во ViewModel

#c_sharp #wpf #checkbox


Пытаюсь воспользоваться механизмом поведения, однако не могу правильно прописать
аргументы в методе во ViewModel. Использую ListBox состоящий из item включающих в себя
CheckBox, собственно перепробовал разные комбинации входных параметров метода, но никак
не могу получить объект Item из ListBox при снятии галочки у CheckBox.

XAML


            
                
                    
                               
                            
                                
                                    
                                
                            
                        
                        
                        
                            
                        
                        
                    
                
            
        


C#

public void PropertyUnchecked()
{
    MessageBox.Show("Unchecked");
}


в итоге получаю ошибку:


  Thrown: "Could not find method named 'PropertyChecked' on object of
  type 'CheckedListItem 1' that matches the expected
  signature."(System.ArgumentException)   Exception Message = "Could not
  find method named 'PropertyChecked' on object of type
  'CheckedListItem`1' that matches the expected signature.", Exception
  Type = "System.ArgumentException", Exception WinRT Data = null


Исходя из сообщения, я посчитал, что метод в коде ViewModel не имеет нужных входных
параметров (CheckedListItem именно такие итемы хранятся в ListBox), начал
экспериментировать:

[1]    

public void PropertyUnchecked(CheckedListItemtr, object sender, RoutedEventArgs e)
{
    MessageBox.Show("Unchecked");
}


[2] 

public void PropertyUnchecked(object sender, RoutedEventArgs e)
{
    MessageBox.Show("Unchecked");
}


[3] 

public void PropertyUnchecked(object sender)
{
    MessageBox.Show("Unchecked");
}


Также поэкспериментировал с разметкой:


    
        
            
        
    



С такой разметкой заработал пустой C# метод, а также [2] и [3], однако ничего кроме
CheckBox и его свойств как элемента (в sender) мне не пришло, но нужен именно Item
в котором сидит объект типа CheckedListItem .
Нашел как реализовать нечто подобное командами с параметрами, но мне нужен именно
вызов метода, и обойтись без команд.
    


Ответы

Ответ 1



Я получил ответ на свой вопрос, звучит он так: This is probably what you're looking for: public void PropertyUnchecked(object sender, RoutedEventArgs e) { var item = ((ContentPresenter)((CheckBox)e.Source).TemplatedParent).Content as CheckedListItem; } Собственно сам вопрос и ответы доступны по ссылке: Вопрос и ответ

Комментариев нет:

Отправить комментарий