studio どのようにして.xamlファイルに別の基本クラスを指定しますか(Silverlight)?




silverlight html5 移行 (2)

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

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

別のSilverlightページクラス用の.xamlファイルで共通の基本クラスをどのように指定できますか? ページ間で共有したい共通のプロパティがいくつかありますが、生成されるたびに.g.csファイル内の基本クラスを手動で変更せずにこれを実行する方法がわかりません。

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


Answer #1

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

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

分離コードを変更する

YourUserControlBaseから適切に継承するには(Page.xaml.csファイルで、自動生成されたものではありません)、

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

それはそれでなければなりません! がんばろう。