Listbox на одной странице, вызывающий обработчик события SelectionChanged для ListBox на AnotherPage? - PullRequest
0 голосов
/ 22 марта 2011

У меня есть две страницы, скажем Main.xaml и Details.xaml. На каждой странице есть ListBox, и я устанавливаю каждую из них в коллекцию в ViewModel (та же коллекция). Странная вещь в том, что когда я выбираю элемент вНа странице сведений он вызывает обработчик события SelectionChanged на странице Main и странице Details. Это ошибка?

Я решил проблему, отсоединив SelectionChanged обработчик событий в методе OnNavigatedFrom ()..

РЕДАКТИРОВАТЬ

В 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>

На обеих страницах Main и Details есть отдельные EvenHandlers MainDataListBox_SelectionChanged и DetailDataListBox_SelectionChanged.

Проблема заключается в том, что при выборе элемента на странице сведений вызывается MainDataListBox_SelectionChangedсначала а потом DetailDataListBox_SelectionChanged.Также моя viewmodel является статической в ​​App.cs, и я устанавливаю контекст данных обеих этих страниц для одной и той же viewmodel.

Спасибо и С уважением

vaysage

1 Ответ

1 голос
/ 24 марта 2011

Поскольку оба списка были привязаны к одному и тому же набору данных, изменение выбранного времени в одном списке могло бы повлиять на другой.

Очевидно, что вы нашли обходной путь, но я бы рекомендовал иметь уникальное представлениемодель для каждой страницы.Если страница представляет собой другой способ отображения одних и тех же данных, используйте одну страницу и измените отображение соответствующим образом.(Создание собственных визуальных состояний может быть хорошим способом сделать это.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...