VisualStateManager在Snapped View中打开页面

时间:2012-08-23 20:46:37

标签: c# styles microsoft-metro

我正在使用C#和Xaml开发一个Windows 8 metro风格的应用程序。我有一个联合新闻源网格,其中包含联合项目作为数据源。当我单击一个项目时,我希望快照页面的视图状态,并在填充视图状态下使用浏览器控件,以便我的应用程序捕捉到320宽度,并在浏览器控件1024填充视图中打开网站。

我正在使用以下代码块。页面正确捕捉但应用程序未捕捉。我该怎么做才能实现我的目标,即填充应用程序的Filled + Snapped组合并填充浏览器控件。

以下是我正在使用的代码:

    private async void ItemView_ItemClick(object sender, ItemClickEventArgs e)
    {
        FeedItem feedItem = (FeedItem)e.ClickedItem;
        feedItem.Read = true;
        ListView lv = e.OriginalSource as ListView;

        if (lv.SelectedItem != null)
        {
            ListViewItem li = lv.SelectedItem as ListViewItem;
            if (li != null) li.Template = Application.Current.Resources["ReadStandard80ItemTemplate"] as ControlTemplate;
        }

        //this.ApplicationViewStates.
        this.Width = 320;

        this.HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Right;
        var CurrentViewState = Windows.UI.ViewManagement.ApplicationView.Value;

        this.MainFramne.Width = 320;

        VisualStateManager.GoToState(this.MainFramne, "Snapped", false);
        Snapped.Storyboard.Begin();


        await Windows.System.Launcher.LaunchUriAsync(new Uri(feedItem.Link.ToString()));
        var test = Windows.UI.ViewManagement.ApplicationView.Value;

    }

1 个答案:

答案 0 :(得分:1)

您无法以编程方式更改任何Windows应用商店应用的快照/已填充/最大化状态。它只能在响应用户发起的请求时完成。 (这样做是为了防止应用程序欺骗或恶意行为。)

如果您的应用程序处于最大化视图中,您可能需要考虑在应用程序中托管浏览器实例(WebView),并且如果您已经处于快照视图中,那么您将启动到外部浏览器(应该有望填充)