2015-10-16 2 views
0

Связывание событий Caliburn.Micro, похоже, не работает с ListPickerFlyout Windows Phone 8.1. Я хочу связать событие ItemsPicked из Flyout с соответствующим методом моей модели ViewModel.WinRT привязка события CaliburnMicro к ListPickerFlyout

<ListView 
      x:Name="Links" 
      toolkitex:ListViewExtensions.BindableSelection="{Binding Selection}" 
      cm:Message.Attach="[Event ItemClick] = [Click($link)]"> 

     <FlyoutBase.AttachedFlyout> 
      <ListPickerFlyout 
       SelectionMode="Single" 
       Placement="Full" 
       ItemsSource="{Binding Lists}" 
       SelectedItem="{Binding SelectedList, Mode=TwoWay}" 
       ctrls:FlyoutEx.Parent="{Binding ElementName=Links}" 
       ctrls:FlyoutEx.IsOpen="{Binding IsListSelectionOpen, Mode=TwoWay}" 
       cm:Message.Attach="[Event ItemsPicked] = [ItemsPicked($this, $eventArgs)]"> 
      </ListPickerFlyout> 
     </FlyoutBase.AttachedFlyout> 
    </ListView> 

Когда событие будет поднято, я получаю следующее исключение: Нет целевой метод найден не ItemsPicked.

System.Exception: Цель не найдена для метода ItemsPicked. на Caliburn.Micro.ActionMessage.Invoke (EventArgs объект) в Caliburn.Micro.TriggerAction`1.Execute (Object отправителя, параметр объекта) в Microsoft.Xaml.Interactivity.Interaction.ExecuteActions (Object отправителя, действия ActionCollection, параметр объекта) в Microsoft.Xaml.Interactions.Core.EventTriggerBehavior.OnEvent (Object отправителя, EventArgs Объект)

Я также попробовал без параметров событий и методов метод, но он не работает.

+0

Не было бы проще просто получить свойство «SelectedItems»? Предполагая, что контроль делает тяжелый подъем для вас? – mvermef

+0

Да, но я не могу справиться с открытыми или закрытыми событиями. –

ответ

0

Проблема возникла из-за того, что ListPickerFlyout не имеет DataContext (или имеет неправильный характер). Я не вижу способа установить DataContext, но вы можете определить выбранный элемент, привязав к настройке вашего SelectedList свойства ViewModel. Например, если ваш SelectedList является тип string:

private string _selectedLists; 
    public string SelectedLists 
    { 
     get { return _selectedLists; } 
     set 
     { 
      _selectedLists = value; 

      ItemsPicked(value); // <---------------- 

      NotifyOfPropertyChange(() => SelectedLists); 
     } 
    } 

    private void ItemsPicked(string selectedValue) 
    { 
     //Handle selection 
    } 
+0

Datacontext унаследован от объекта, с которого он прикреплен. FlyoutBase.AttachedFlyout или '' в качестве примера ... https://msdn.microsoft.com/en-us/library/windows/apps/xaml/ dn308515.aspx – mvermef

+0

Хотя проблема заключается в том, что он не знает, как он настраивает ListPickerFlyout для начала с точки зрения кодирования, он не должен быть разрешен для свободного размещения на экране, поскольку он является прогибом, который должен быть присоединен к некоторые моды. В настоящий момент у нас нет полной картины. – mvermef

+0

В ListPickerFlyout добавлен элемент управления ListView. –

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