2009-08-19 66 views
12

如何在.xaml文件中爲單獨的Silverlight頁類指定一個公共基類?我有幾個常用屬性,我希望跨頁面共享,但是我不知道如何在不生成每次生成時手動更改.g.cs文件中的基類的情況下執行此操作。如何在.xaml文件(Silverlight)中指定不同的基類?

這可能嗎?我認爲這是可能的,因爲例如Toolkit中的ChildControl來自不同的類。我忽略了一些明顯的東西?

回答

29

所有的Silverlight「頁面」實際上都是從UserControl默認派生的。所以,這是你需要做的。簡單的例子,當然你可能想要聲明依賴屬性,事件等等。

1.具有公共屬性

public class YourUserControlBase : UserControl 
{ 
    public bool SomeProperty {get; set; } 
} 

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"> 

修改代碼隱藏

(在Page.xaml.cs文件,而不是自動生成一個)正確繼承從YourUserControlBase

public partial class MainPage : YourUserControlBase 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 
    } 
} 

這應該是它!祝你好運。

+0

嘿,謝謝!我最初認爲,'有趣的是,他與開發人員分享他的名字......';-)。也喜歡自動完成。我剛建立了一個自定義的模板控件,讓我的老闆流口水,所以謝謝。我拿了信貸,雖然=) – Travis 2009-08-19 10:19:54

+0

另外,如果你們沒有功能添加,並希望添加一個比它的價值更麻煩的...我正在尋找類似於: x:BaseClass =「Namespace .YourUserControlBase「 再次感謝! – Travis 2009-08-19 10:22:43

+0

XAML兼容性自從它出現以來就非常困難,但是我聽到了那個 - 我將分享這些反饋。樂意效勞! – 2009-08-19 15:21:20

6

另外:當你的基類是在其他組件(項目),你可以這樣做:

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

相關問題