如何在.xaml文件(Silverlight)中指定不同的基类?

时间:2009-08-19 01:45:13

标签: silverlight inheritance

如何在.xaml文件中为单独的Silverlight Page类指定公共基类?我有一些常见的属性,我想在页面之间共享,但我不知道如何在不生成每次生成的情况下手动更改.g.cs文件中的基类。

这可能吗?我认为这是可能的,因为例如,Toolkit中的ChildControl来自不同的类。我忽略了一些明显的东西吗

2 个答案:

答案 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]"