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

tsi*_*mon 13 silverlight inheritance

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

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

Jef*_*cox 31

默认情况下,所有Silverlight"页面"实际上都是从UserControl派生的.所以,这就是你需要做的.简单的例子,当然你可能想要声明Dependency属性,事件等等.

1.使用公共属性创建类

public class YourUserControlBase : UserControl
{
    public bool SomeProperty {get; set; }
}
Run Code Online (Sandbox Code Playgroud)

2.创建/修改页面的XAML

为包含新基类的本地程序集和命名空间添加XML命名空间,并记住将该x:Class属性保留在文件的顶部,但将UserControl根元素修改为本地名称

这是我的更新文件:

<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">
Run Code Online (Sandbox Code Playgroud)

修改代码隐藏

(Page.xaml.cs文件,而不是自动生成的文件)正确继承自YourUserControlBase:

public partial class MainPage : YourUserControlBase
{
    public MainPage()
    {
        InitializeComponent();
    }
}
Run Code Online (Sandbox Code Playgroud)

那应该是它!祝好运.


Eri*_*rik 6

另外:当你的基类在另一个程序集(项目)中时,你可以这样做:

xmlns:Custom="clr-namespace:SilverlightApplication1;assembly=[Other.Assembly]"