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)
那应该是它!祝好运.
另外:当你的基类在另一个程序集(项目)中时,你可以这样做:
xmlns:Custom="clr-namespace:SilverlightApplication1;assembly=[Other.Assembly]"
| 归档时间: |
|
| 查看次数: |
12941 次 |
| 最近记录: |