2010-12-08 12 views
0

私はWindows phoneのためのアプリを構築しています7.私はビューモデルを持つパノラマページを持っています - メインメニュー項目のリスト。これらのクリックをデータにバインドする方法や、他のページへのリンクを作成する方法はわかりません。 (つまり、このmenyアイテムは、別のページにリンクするには舐める必要があります)。私が試したのは、メインのviewmodel.csアイテムのリストの{binding Link}というテキストにclickイベントを割り当てました。それぞれの 'Link'項目は、以下のcsファイルのコードに従ってEventハンドラでした。これはどのようにこれを達成するために不思議に動作しません。 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" }); 

私はあなたがより多くの情報が必要な場合は私に知らせて、あなたは私がここでやってトリング午前何を理解してほしいです。どうもありがとう。 Dan

答えて

0

あなたのTextBlock_MouseLeftButtonDown_*イベントはMainPage.xaml.csであると仮定しています。これは正しいです。

この場合、ViewModelsはこのように動作するようには設計されていません。

新しい "DataBound"電話アプリケーションで作成されたデフォルトコードを見てください。これは、データだけを含むビューモデルを使用する例を示します。

ItemViewModelで実際のメソッドを作成し、listitemのclickイベントでモデル内のオブジェクトのメソッドを呼び出すこともできます。

+0

ありがとうマット、私はあなたのラインに沿ってさらに研究を行います。もちろん、TextBlock_MouseLeftButtonDown_ *がmainpage.xaml.csにあることは間違いありません。 –

+0

@Danどのようにあなたは終わりましたか? –

関連する問題