2010-12-08 38 views
0

Im建立一个Windows Phone 7的应用程序。我有一个全景图页面的视图模型 - 主菜单项列表。我无法研究如何将这些点击与数据绑定,或者创建到其他页面的链接。 (也就是说,每个这样的东西都需要可以链接到另一个页面)。我试过的是,在我的主viewmodel.cs项目列表中为文本分配了一个单击事件来{绑定链接}。每个“链接”项目都是一个事件处理程序,按照下面在cs文件中显示的代码。这不工作,所以想知道如何实现这一点。 下面的示例xaml文件显示列表中的所有文本链接转到相同的事件:'TextBlock_MouseLeftButtonDown_Wales'。但当然,我希望他们去每个有自己的网页。点击链接WP7视图模型

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

我假设您的TextBlock_MouseLeftButtonDown_*事件在MainPage.xaml.cs。它是否正确。

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

查看在新的“DataBound”电话应用程序中创建的默认代码。这将显示使用仅包含数据的视图模型的示例。

或者,您可以在ItemViewModel上创建实际方法,并让listitem上的click事件调用模型中对象上的方法。

+0

谢谢马特,我会根据你的观点做更多的研究。是的,你确定TextBlock_MouseLeftButtonDown_ *在mainpage.xaml.cs中。 – 2010-12-08 21:22:20