목록 상자에서 항목을 끌어다 놓을 수있는 ReorderListBox
control을 사용하고 있습니다. 나는 또한 탭 이벤트를 캡처하고 RelayCommand
핸들러를 실행 MvvmLight
, EventTrigger
과 EventToCommand
클래스를 사용하고ItemTemplate에 ScrollViewer가있는 경우 Windows Phone에서 SelectedItem이 설정되지 않음
. 일반 나이가 StackPanel
일 때 모든 것이 잘 작동합니다. 내 목록 상자의 항목 템플릿입니다. 그러나, 내가 ScrollViewer
을 붙이자 마자, 나의 SelectedItem
은 null로 나타난다. 해당 스크롤 뷰어에 바인딩해야하는 항목을 가져 오는 방법이 있습니까? 아래 코드.
뷰 모델
public ViewModelClass
{
...
public ObservableCollection<MyItemViewModel> MyItemsSource { get; private set; }
public RelayCommand<MyItemViewModel> EditItemCommand { get; private set; }
public ViewModelClass()
{
EditItemCommand = new RelayCommand<MyItemViewModel>(OnEditItem);
}
private void OnEditItem(MyItemViewModel parameter)
{
// parameter is always null, even when I change the type of the RelayCommand to object
}
}
XAML
<rlb:ReorderListBox x:Name="MyListBox" SelectionMode="Single" ItemsSource="{Binding MyItemsSource}" IsReorderEnabled="True">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Tap">
<command:EventToCommand Command="{Binding EditItemCommand}" CommandParameter="{Binding ElementName=MyListBox, Path=SelectedItem}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<rlb:ReorderListBox.ItemTemplate>
<DataTemplate>
<ScrollViewer Margin="0,4" toolkit:TiltEffect.IsTiltEnabled="True" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding SomeProperty}" Style="{StaticResource BaseTextStyle}" FontSize="{StaticResource PhoneFontSizeMediumLarge}" FontFamily="Segoe WP SemiLight" VerticalAlignment="Center" />
<Border Background="DarkGoldenrod" Margin="3" VerticalAlignment="Center">
<TextBlock Margin="6,3" Text="{Binding AnotherProperty}" Foreground="White" FontFamily="Segoe WP Light" FontSize="16" VerticalAlignment="Center" TextAlignment="Right" />
</Border>
</StackPanel>
</ScrollViewer>
</DataTemplate>
</rlb:ReorderListBox.ItemTemplate>
</rlb:ReorderListBox>
SelectionChanged를 사용할 수 없습니다. 지난 번에 같은 항목을 누르거나 하나의 항목 만있는 경우 해당 항목이 실행되지 않기 때문에 실행되지 않습니다. 나는 그것을 전에 사용하고 있었다. – sohum