从MainViewModel获取Uri

时间:2013-01-11 21:33:26

标签: c# windows-phone-7

我正在努力制作一个应用程序,我在堆栈面板上有很多不同网站的链接,从MainViewMode l获取内容,所以当我点击描述时它会打开网页WebBrowserTask。但是,我希望在MainViewModel上使用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

1 个答案:

答案 0 :(得分:0)

将以下代码添加到Open_Web方法的开头

var templateRoot = (FrameworkElement)sender;
var dataItem = (ItemViewModel)templateRoot.DataContext;
var uri = dataItem.Uri;