如何在.xaml文件中爲單獨的Silverlight頁類指定一個公共基類?我有幾個常用屬性,我希望跨頁面共享,但是我不知道如何在不生成每次生成時手動更改.g.cs文件中的基類的情況下執行此操作。如何在.xaml文件(Silverlight)中指定不同的基類?
這可能嗎?我認爲這是可能的,因爲例如Toolkit中的ChildControl來自不同的類。我忽略了一些明顯的東西?
如何在.xaml文件中爲單獨的Silverlight頁類指定一個公共基類?我有幾個常用屬性,我希望跨頁面共享,但是我不知道如何在不生成每次生成時手動更改.g.cs文件中的基類的情況下執行此操作。如何在.xaml文件(Silverlight)中指定不同的基類?
這可能嗎?我認爲這是可能的,因爲例如Toolkit中的ChildControl來自不同的類。我忽略了一些明顯的東西?
所有的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();
}
}
這應該是它!祝你好運。
另外:當你的基類是在其他組件(項目),你可以這樣做:
xmlns:Custom="clr-namespace:SilverlightApplication1;assembly=[Other.Assembly]"
嘿,謝謝!我最初認爲,'有趣的是,他與開發人員分享他的名字......';-)。也喜歡自動完成。我剛建立了一個自定義的模板控件,讓我的老闆流口水,所以謝謝。我拿了信貸,雖然=) – Travis 2009-08-19 10:19:54
另外,如果你們沒有功能添加,並希望添加一個比它的價值更麻煩的...我正在尋找類似於: x:BaseClass =「Namespace .YourUserControlBase「 再次感謝! – Travis 2009-08-19 10:22:43
XAML兼容性自從它出現以來就非常困難,但是我聽到了那個 - 我將分享這些反饋。樂意效勞! – 2009-08-19 15:21:20