2009-08-19 3 views
12

別のSilverlightページクラスの.xamlファイルで共通の基本クラスを指定するにはどうすればよいですか?私はいくつかの一般的なプロパティをページ間で共有したいと思いますが、生成されるたびに.g.csファイルの基本クラスを手動で変更しないとこれを行う方法がわかりません。.xamlファイル(Silverlight)で異なる基本クラスをどのように指定しますか?

これは可能ですか?たとえば、ToolkitのChildControlは別のクラスから派生しているので、これは可能です。私は明白な何かを見落としていますか?

答えて

29

すべてのSilverlightの「ページ」は、デフォルトでUserControlから実際に派生しています。それで、ここにあなたがする必要があることがあります。シンプルな例では、もちろん、依存関係のプロパティ、イベントなどを宣言したいと思うでしょう。

1.

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

2.新しいが含まれているローカルアセンブリおよび名前空間のためのXML名前空間を追加/作成ページのXAML

を変更する一般的なプロパティを使用してクラスを作成します。ファイルの先頭に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

+0

また、あなたが追加する機能が不足していて、それが価値があるよりも困っているものを追加したいのであれば、私は何かを探していました: x:BaseClass = "Namespace .YourUserControlBase " もう一度おねがいします! – Travis

+0

XAMLとの互換性は厳しいものですが、そのことについてあなたの話を聞いています。私はフィードバックを共有します。助けてうれしい! –

6

はまた:あなたのベースクラスは、他のアセンブリ(プロジェクト)にあるとき、あなたはこれを行うことができます。

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

関連する問題