如何在 Windows Phone 8.1 中的运行时将单独的视图加载到 XAML ......?
How to load a separate view in to an XAML at runtime in Windows Phone 8.1.....?
我创建了一个 Windows Phone 8.1 应用程序,它在屏幕顶部有两个选项卡。根据用户的选择,选项卡下方的区域会更新。现在我通过定义两个堆栈面板(每个选项卡视图一个)并在用户单击选项卡时更改其可见性(折叠一个视图并使另一个视图可见)来实现此目的。我在每个视图中也有单独的事件处理程序(如按钮点击)这种方法工作正常。我需要的是将两个视图拆分为两个单独的 类 或什至页面..或其他东西(我完全不知道该怎么做..),可以在运行时根据用户选择加载到我的选项卡下方tab.I 需要在单独的部分中定义事件处理程序..即 类 或什至页面..或类似的东西(不在 MainPage 的同一个 .cs 文件中)
I need something like fragments in Android.
What is the best approach to achieve this in Windows Phone 8.1 ..?
您只需要UserControl
。它允许你做你所描述的一切。在 SolutionExplorer 中右键单击您的项目名称,然后选择 Add > New Item... > 用户控制.
就像 Page CS 文件一样,您可以在其中包含事件处理程序。
然后只需在主布局中用这些新创建的用户控件替换您的堆栈面板。
更改可见性没问题。如果控件在开始时 collapsed,那么它不会被加载,直到它的可见性设置为可见(我在我的应用程序中使用这个 visibility trick向用户显示页面加载...但这是另一个对话的主题)。
不使用 Visibility
属性,而是使用 Opacity
属性 来隐藏或显示控件,这提高了应用程序性能。当您更改可见性时,整个控件都会重新绘制,因此当您在 UserControl 中使用复杂的 xaml 时会花费更多时间。
如果你想使用导航参数,你可以在一个 Grid
中使用两个 Frames
,你可以通过每个 Frame
导航到每个页面。这仅适用于 windows phone 8.1 应用程序。
示例代码:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Frame Name="frame1" Grid.Row="0"/>
<Frame Name="frame2" Grid.Row="1"/>
</Grid>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
frame1.Navigate(typeof(BlankPage1));
frame2.Navigate(typeof(BlankPage2));
}
我创建了一个 Windows Phone 8.1 应用程序,它在屏幕顶部有两个选项卡。根据用户的选择,选项卡下方的区域会更新。现在我通过定义两个堆栈面板(每个选项卡视图一个)并在用户单击选项卡时更改其可见性(折叠一个视图并使另一个视图可见)来实现此目的。我在每个视图中也有单独的事件处理程序(如按钮点击)这种方法工作正常。我需要的是将两个视图拆分为两个单独的 类 或什至页面..或其他东西(我完全不知道该怎么做..),可以在运行时根据用户选择加载到我的选项卡下方tab.I 需要在单独的部分中定义事件处理程序..即 类 或什至页面..或类似的东西(不在 MainPage 的同一个 .cs 文件中)
I need something like fragments in Android.
What is the best approach to achieve this in Windows Phone 8.1 ..?
您只需要UserControl
。它允许你做你所描述的一切。在 SolutionExplorer 中右键单击您的项目名称,然后选择 Add > New Item... > 用户控制.
就像 Page CS 文件一样,您可以在其中包含事件处理程序。
然后只需在主布局中用这些新创建的用户控件替换您的堆栈面板。
更改可见性没问题。如果控件在开始时 collapsed,那么它不会被加载,直到它的可见性设置为可见(我在我的应用程序中使用这个 visibility trick向用户显示页面加载...但这是另一个对话的主题)。
不使用 Visibility
属性,而是使用 Opacity
属性 来隐藏或显示控件,这提高了应用程序性能。当您更改可见性时,整个控件都会重新绘制,因此当您在 UserControl 中使用复杂的 xaml 时会花费更多时间。
如果你想使用导航参数,你可以在一个 Grid
中使用两个 Frames
,你可以通过每个 Frame
导航到每个页面。这仅适用于 windows phone 8.1 应用程序。
示例代码:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Frame Name="frame1" Grid.Row="0"/>
<Frame Name="frame2" Grid.Row="1"/>
</Grid>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
frame1.Navigate(typeof(BlankPage1));
frame2.Navigate(typeof(BlankPage2));
}