我正在构建一个适用于Windows Phone 7的应用程序。我有一个带有视图模型的全景页面 - 一个主菜单项列表。我无法弄清楚如何将这些点击绑定到数据,或创建到其他页面的链接。 (即;每个meny项目都需要舔到链接到另一个页面)..我尝试的是,在我的主viewmodel.cs项目列表中为文本分配了一个click事件到{binding Link}。根据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" });
我希望您了解我在这里要做的事情,如果您需要更多信息,请告诉我。非常感谢。丹
答案 0 :(得分:0)
我假设您的TextBlock_MouseLeftButtonDown_*
个活动在MainPage.xaml.cs
。它是否正确。
如果是这种情况,那么ViewModels的设计并不是这样的。
查看在新的“DataBound”手机应用程序中创建的默认代码。这将显示使用仅包含数据的视图模型的示例。
或者你可以在ItemViewModel
上创建一个实际的方法,并让listitem上的click事件调用模型中对象的方法。