我有兩頁說Main.xaml
和Details.xaml
。每個頁面都有一個ListBox,我將它設置爲ViewModel(Same collection)中的一個集合。奇怪的是,當我在Details頁面中選擇一個項目時,它會調用SelectionChanged
事件處理程序Main
頁面和Details
page.Is this a bug?列表框在另一頁上調用ListBox的SelectionChanged事件處理程序?
我已通過在OnNavigatedFrom
()方法中取消掛接SelectionChanged
事件處理程序解決了此問題。
編輯
在Main.Xaml我有類似如下:
<ListBox Name="MainDataListBox" Margin="8,113,8,8" ItemsSource="{Binding DataList}" SelectionChanged="MainDataListBox_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" >
<Border BorderThickness="3" BorderBrush="#A5FFFFFF" Width="80" Margin="0,20,0,20" Height="60">
<Image Source="{Binding ImageUrl, Mode=OneWay}" VerticalAlignment="Stretch" Margin="0,0,0,0" Width="80" Height="60" Stretch="Fill" />
</Border>
<TextBlock TextWrapping="Wrap" Text="{Binding Title}" FontSize="40" FontWeight="Normal" VerticalAlignment="Center" Margin="30,0,0,0" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在Details.xaml我也有相同類型的ListBox:
<ListBox Name="DetailDataListBox" Margin="8,113,8,8" ItemsSource="{Binding DataList}" SelectionChanged="DetailDataListBox_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" >
<Border BorderThickness="3" BorderBrush="#A5FFFFFF" Width="80" Margin="0,20,0,20" Height="60">
<Image Source="{Binding ImageUrl, Mode=OneWay}" VerticalAlignment="Stretch" Margin="0,0,0,0" Width="80" Height="60" Stretch="Fill" />
</Border>
<TextBlock TextWrapping="Wrap" Text="{Binding Title}" FontSize="40" FontWeight="Normal" VerticalAlignment="Center" Margin="30,0,0,0" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
兩者的頁面主要細節有單獨的EvenHandlers MainDataListBox_SelectionChanged
和DetailDataListBox_SelectionChanged
。
問題是,當我在詳細信息頁面中選擇一個項目MainDataListBox_SelectionChanged
被稱爲第一個,然後DetailDataListBox_SelectionChanged
。 另外我的viewmodel是App.cs中的靜態模型,我將這兩個頁面的數據上下文設置爲相同的viewmodel。
感謝和問候
vaysage
聽起來像你掛鉤兩個列表直到同一事件。如果沒有代碼,它肯定很難說。 – 2011-03-22 12:48:48
@Matt萊西我把這兩個列表掛鉤到單獨的事件。 – Vaysage 2011-03-23 05:08:18
你可以發佈一些代碼,演示如何重現這一點。 – 2011-03-23 09:22:27