0

スタックパネルにさまざまなWebサイトへのリンクがたくさんあり、MainViewModelからコンテンツを取得するアプリケーションを作成しようとしているので、説明をクリックすると、を介してWebが開きますWebBrowserTaskMainViewModelただし、Uri をに置き、その情報を .cs で取得したいと考えています。これにより、サイトに移動します。

私のxamlコードは

<ListBox Margin="0,0,-12,0" ItemsSource="{Binding Items}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal" Margin="0,0,0,17" Tap=Open_Web>
<Image Height="100" Width="100"   Margin="0,0,0,0" Source="{Binding ImgWeb}" HorizontalAlignment="Left"/>
                            <StackPanel Width="311">
                                <TextBlock Text="{Binding LineOne}" 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>

私の.csは

private void Open_Web(object sender, RoutedEventArgs e)
    {
        WebBrowserTask webBrowserTask = new WebBrowserTask();
        webBrowserTask.Uri = new Uri("I DONT KNOW");
        webBrowserTask.Show(); 

そして、私の MainViewModel コードは次のとおりです。

this.Items.Add(new ItemViewModel() { LineOne = "Web Name", LineTwo = "Web description", Uri = "http://WebSite.com" });

webBrowserTask.Uri = new Uri("I DONT KNOW");情報をバインドしないと機能しますが、MainViewModelから Uri を取得する方法がわかりません

4

1 に答える 1

0

Open_Web メソッドの先頭に次のコードを追加します。

var templateRoot = (FrameworkElement)sender;
var dataItem = (ItemViewModel)templateRoot.DataContext;
var uri = dataItem.Uri;
于 2013-01-12T09:52:09.737 に答える