Нажмите на ссылку на WP7 посмотреть модель - PullRequest
0 голосов
/ 08 декабря 2010

Я создаю приложение для Windows Phone 7. У меня есть страница панорамы с моделью представления - список пунктов главного меню.Я не могу понять, как привязать эти клики к данным или создать ссылку на другие страницы.(Т. Е. Каждый из этих пунктов меню должен быть похожим на ссылку на другую страницу). То, что я пробовал, - это присвоение события click тексту {binding Link} в моем главном списке элементов viewmodel.cs.Каждый элемент «Ссылка» был обработчиком события в соответствии с кодом, показанным ниже в файле cs.Это не работает так интересно, как этого добиться.В приведенном ниже примере файла xaml все текстовые ссылки в списке идут на одно и то же событие: «TextBlock_MouseLeftButtonDown_Wales».но, конечно, я хочу, чтобы они заходили на каждую свою страницу.

MainPage.xaml

  <ListBox  Margin="0,0,-12,0" ItemsSource="{Binding Items}" Background="#75000000">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal" Margin="0,0,0,10">
                            <!--Replace rectangle with image-->
                            <!-- <Rectangle Height="100" Width="100" Fill="#FFE5001b" Margin="12,0,9,0"/> -->
                            <Image Source="/images/image1.png" Height="70" HorizontalAlignment="Left" Margin="0,0,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="77" Opacity="1" OpacityMask="#C8000000" />
                            <StackPanel Width="311">
                                <TextBlock Text="{Binding LineOne}"   MouseLeftButtonDown="TextBlock_MouseLeftButtonDown_Wales"   TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                                <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                            </StackPanel>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

MainViewModel.cs

 this.Items.Add(new ItemViewModel() { LineOne = "England", LineTwo = "blahblah", Link = "TextBlock_MouseLeftButtonDown_London" });
        this.Items.Add(new ItemViewModel() { LineOne = "Scotland", LineTwo = "blahblah ", Link = "TextBlock_MouseLeftButtonDown_London" });
        this.Items.Add(new ItemViewModel() { LineOne = "Wales", LineTwo = "blahblah ", Link = "TextBlock_MouseLeftButtonDown_Wales" });
        this.Items.Add(new ItemViewModel() { LineOne = "London", LineTwo = "blablbah ", Link = "TextBlock_MouseLeftButtonDown_London" });

Я надеюсь, вы понимаете, чтоЯ собираюсь сделать здесь, дайте мне знать, если вам нужно больше информации.Большое спасибо.Dan

1 Ответ

0 голосов
/ 08 декабря 2010

Я предполагаю, что ваши TextBlock_MouseLeftButtonDown_* события находятся в MainPage.xaml.cs.Это правильно.

Если это так, то ViewModels не предназначены для такой работы.

Посмотрите на код по умолчанию, созданный в новом телефонном приложении "DataBound".Это покажет пример использования моделей представления, которые просто содержат данные.

В качестве альтернативы вы можете создать фактический метод для ItemViewModel и сделать так, чтобы событие click в списке элементов вызывало метод объекта в модели.

...