如何在.xaml文件中为单独的Silverlight Page类指定公共基类?我有一些常见的属性,我想在页面之间共享,但我不知道如何在不生成每次生成的情况下手动更改.g.cs文件中的基类。
这可能吗?我认为这是可能的,因为例如,Toolkit中的ChildControl来自不同的类。我忽略了一些明显的东西吗
答案 0 :(得分:31)
默认情况下,所有Silverlight“页面”实际上都是从UserControl派生的。所以,这就是你需要做的。简单的例子,当然你可能想要声明依赖属性,事件等等。
1。使用公共属性
创建您的类public class YourUserControlBase : UserControl
{
public bool SomeProperty {get; set; }
}
2。创建/修改页面的XAML
为包含新基类的本地程序集和命名空间添加XML命名空间,并记住将x:Class
属性保留在文件的顶部,但将UserControl根元素修改为本地名称< / p>
这是我的更新文件:
<local:YourUserControlBase
xmlns:local="clr-namespace:SilverlightApplication1"
x:Class="SilverlightApplication1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
修改代码隐藏
(Page.xaml.cs文件,而不是自动生成的文件)从YourUserControlBase
正确继承:
public partial class MainPage : YourUserControlBase
{
public MainPage()
{
InitializeComponent();
}
}
那应该是它!祝你好运。
答案 1 :(得分:6)
另外:当你的基类在另一个程序集(项目)中时,你可以这样做:
xmlns:Custom="clr-namespace:SilverlightApplication1;assembly=[Other.Assembly]"