2013-12-20 2 views
0

Довольно новый для Windows Phone и Xaml, и я решил начать использовать DataTemplates, как это выглядело опрятно, и я мог легко переключаться между ними и т.д.кнопку КР8 DataBind нажмите/Command с RoutedEventHandler

У меня есть требование, где на кнопке щелкните в зависимости от данных по элементу в списке. Я хочу вызвать другую функцию или с разными параметрами. Я думал, что самый простой способ - связать с ним RoutedEventHandler через анонимную функцию.

Когда я сделал это в кодировке с статическим контролем на сформированном, он работал отлично. Он также работал, когда я добавил свои собственные элементы управления на панель стека и т. Д. Но все было довольно грязно.

// Example of RoutedEventHandler that works when I create the button in code behind 
model.clickEventHandler = (s, e) => LoadResult(r.id); 

<ScrollViewer Name="scrvResults" > 
     <ListBox Name="lbResults" ItemsSource="{Binding}"> 
       <ListBox.ItemTemplate> 
         <DataTemplate> 
          <Button Command="{Binding clickEventHandler}" > 
            // Stuff 
            // Doesn't crash but doesn't fire the event 
          </Button> 
          <Button Click="{Binding clickEventHandler}" > 
            // Stuff 
            // Throws a com exception 
          </Button> 
         </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 
    </ScrollViewer> 

Я пробовал различные подпараметры. Все примеры, которые я видел, похоже, ссылаются на статическую функцию. Является ли это лишь некоторым синтаксисом, я ошибаюсь, могу ли я не привязываться к нему таким образом?

ответ

2

Вам необходимо привязать свою команду к типу ICommand. Смотрите здесь для получения дополнительной информации:

ICommand interface

Command Binding

Button событие щелчка может быть связанно с использованием взаимодействия триггеров, а не просто обязательное событием атрибута клика:

Using EventTrigger in XAML for MVVM – No Code Behind Code

+0

Удивительная благодарность, это было именно то, что мне нужно. –

Смежные вопросы