2011-07-11 15 views
2

私は現在、プロジェクトファイルを分割する必要があるプロジェクトに取り組んでいます。 1つはSilverlight 3に、もう1つはSilverlight 4に準拠しています。プロジェクトは、他のいくつかのプロジェクトで使用されるユーザーコントロールを作成します。残念ながら、SL3に入っているので、SL3バージョンのコントロールが必要な理由は今アップグレードできません。Silverlight 3およびSilverlight 4条件付きxaml

これまでのところうまくいきましたが、最近はViewBoxをコントロールに追加しようとしました。 SL3ではツールボックスに、SL4ではコアにあるため、問題が発生します。

SL3プロジェクトのツールキットやSL4プロジェクトのコアからプルする方法はありますか?私はxamlのプリプロセッサの定義を調べていくつかの情報を見つけましたが、デザイナーにコードをロードする能力がなくなってしまうのが好きではありません。

答えて

1
SL4プロジェクト内

using //namespace for SL3 ViewBox 

namepsace MyProjectNamespace 
{  
    public class MyViewBox : ViewBox 
    { 
    }  
} 

:SL3プロジェクト内

私がやったことは、内側のビューボックス要素の周りに境界線を作成することでした。それから私はxamlのビューボックスを取り除きました。私はコントロールをロードするときに、私は含まれているボーダーの子をnullに設定し、コードでビューボックスを作成し、その子を内側のボーダーに設定します。次に、私はビューの枠線に含まれているボーダーの子を設定します。

this.viewBoxContainer.Child = null; 
this.viewBoxContainer.Child = new Viewbox { Child = this.innerBorder}; 
0

いいえ、XAML内では条件付きの問題がサポートされていません。どのように各プロジェクト内で独自のサブクラスの作成について:あなたの一般的なXAMLファイル内の

using //namespace for SL4 ViewBox 

namepsace MyProjectNamespace 
{  
    public class MyViewBox : ViewBox 
    { 
    }  
} 

<UserControl ... 
     xmlns:local="clr-namespace:MyProjectNamespace"> 
    <local:MyViewBox> 
    .. content goes here .. 
    </local:MyViewBox> 
</UserControl> 
+0

Viewboxはシールされたクラスです – thecaptain0220

+0

OK - ViewBoxをカプセル化したUserControlはどうですか? – ColinE

+0

私はそれについて考えましたが、ビューボックスはxamlに残っています – thecaptain0220

0

の後ろ

<Border Name="viewBoxContainer"> 
    <Border x:Name="innerBorder"> 
     <TextBlock x:Name="innerText" Text="Test" /> 
    </Border> 
</Border> 

コードは、我々は同じ問題を抱えていた、と私たちのソリューションは、ボード全体で使用された当社独自のビューボックスを作ることでした。

私たちは、SL3ツールキットで提供されているViewboxのソースコードを取得し、それをコピーして独自の名前空間に入れ、MyViewboxのような名前に変更しました。

私はこれが最善の解決策であるかどうかはわかりませんが、うまくいきました。

関連する問題