首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击WP7视图模型上的链接

单击WP7视图模型上的链接
EN

Stack Overflow用户
提问于 2010-12-09 01:29:08
回答 1查看 870关注 0票数 0

我正在为Windows phone 7构建一个应用程序。我有一个带有视图模型的全景页面--主菜单项的列表。我不知道如何将这些点击绑定到数据,或者创建到其他页面的链接。(例如,这些项目中的每一项都需要可点击才能链接到另一个页面)..我尝试的是,为我的主viewmodel.cs项目列表中的{binding Link}文本分配一个单击事件。根据cs文件中所示的代码,每个“Link”项都是一个事件处理程序。这是行不通的,所以想知道如何实现这一点。下面的xaml文件示例显示了列表中的所有文本链接都转到同一个事件:'TextBlock_MouseLeftButtonDown_Wales‘。当然,我希望他们各自访问自己的页面。

MainPage.xaml

代码语言:javascript
复制
  <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

代码语言:javascript
复制
 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" });

我希望你能理解我在这里做什么,如果你需要更多的信息,请让我知道。非常感谢。丹

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-09 03:04:58

我假设您的TextBlock_MouseLeftButtonDown_*事件是在MainPage.xaml.cs中进行的。这样做对吗?

如果是这样的话,ViewModels就不是这样设计的。

看看在一个新的"DataBound“手机应用程序中创建的默认代码。这将显示一个使用仅包含数据的视图模型的示例。

或者,您可以在ItemViewModel上创建一个实际的方法,并让列表项目上的单击事件调用模型中对象上的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4390402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档