我正在尝试为我的WP应用创建自定义基页。我是通过创建一个继承自cs
的新PhoneApplicationPage
类文件来实现此目的的:
public class BasePage: PhoneApplicationPage
{
//handle common non-visual stuff here
}
问题是我想在每个使用BasePage
的页面上添加一个控件,但是BasePage没有LayoutRoot
或者我可以将控件附加到的任何可视元素。有没有办法可以将相同的控件添加到使用BasePage的所有页面,这样我就不必每次都复制/粘贴它?
修改:根据TriggerPin的回答添加XAML。我为BasePage.cs
创建了一个新的XAML文件,但这会在BasePage.g.cs
中抛出错误:
" MyApp.MainPage已经包含' _contentLoaded'"的定义(以及' LayoutRoot'和' InitializeComponent'的类似消息)
<local:BasePage
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MyApp.Template"
x:Class="MyApp.MainPage"
mc:Ignorable="d">
答案 0 :(得分:2)
请注意,默认情况下,从PhoneApplicationPage派生的类型是部分
public partial class MainPage : PhoneApplicationPage
部分定义允许您跨多个文件拆分类定义。最常见的是这种类型,定义分为.cs和.xaml文件。
<phone:PhoneApplicationPage x:Class="MyProject.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone">
<!-- Custom layout here -->
</phone:PhoneApplicationPage>
如果您将实现作为部分类并提供基本xaml代码,那么您将能够实现您想要实现的目标。
答案 1 :(得分:0)
您需要一个必须为Panel类型的容器,至少用于添加子控件。 Page只是一个UserControl,无法直接将UIElement添加到其中。
试试这个:
Panel container = // init it from your page, you must have a root element in page.
container.Children.Add(new TextBlock()); // your children control.
我是在Win8中完成的。