2011-01-24 9 views
1

私はスターとハーフスターを表し、私のXAMLでの2つのリソースいますので、私はプロパティをXAMLで定義されたリソース項目の複数のコピーをC#で追加する方法は?

<Path x:Key="HalfStar" Margin="2" Height="48" Stretch="Uniform" 
Data="M12.763,0 L12.763499,18.546873 L4.8750005,24.277998 L7.887928,15.004692 L0,9.273982 L9.7000046,9.273982 z" F 
ill="Blue/> 
<Path x:Key="FullStar" Margin="2" Height="48" Stretch="Uniform" 
Data="M12.763,0 L15.824005,9.2739811 L25.527,9.2739811 L17.638763,15.004915 L20.652,24.278 L12.763499,18.546873 L4.8750005,24.277998 L7.887928,15.004692 L0,9.273982 L9.7000046,9.273982 z" 
Fill="Blue"/> 

私は評価を表すために、私のC#コードでのItemsControlにそれらのいくつかを追加したいの割り当てタイプの私のC#コード「パス」とは、以下を参照してください。私は、次のXAMLエラーを取得し、私はこれを行うしかし毎回、のItemsControlにスターを追加するためにこれらを使用し、その後

Main.FullStar = ((Path)Resources["FullStar"]); 
Main.HalfStar = ((Path)Resources["HalfStar"]); 

をそして:「要素がすでに別の子であります要素 "と呼びますが、私のコードビハインドで単純なオブジェクトをインスタンス化するとサークル私はこれを何度でも追加することができます。
私はこの問題が、C#で定義されたバージョンで使用されている名前付きキーを持つパスに起因すると考えています。しかし、この場合はエラーが意味をなさないが、必要なだけ多くのFullStarsとHalfStarsを追加したい。私が興味を持っているデータです.Geometry.Parseメソッドを使用しますが、Windows PhoneのSilverlightには存在しません。

「HalfStar」と「FullStar」という名前のリソースを使用してItemsControlに追加する必要があるだけで、追加部分はコードビハインドで行う必要がありますが、スターとアイテムコントロールはXAMLで定義されています。私の唯一の解決策は、サークルを代わりに使用することですが、私は必要なリソースを持っていると考えています。これをコピーしてXAMLのItemsControlに貼り付けると、それらはきれいに見えます。現在、私はリソースプラットフォームの制限のためにC#でそれらを定義することはできません。

答えて

0

FrameworkElementの1つのインスタンスは、1つの親しか持つことができないため、複数の場所で再利用することはできません。ただし、PathGeometryをリソースとして2つの図形に保持し、コード内に新しいPathを作成し、PathGeometryDataプロパティに設定することができます。

更新日:私の以前の提案はうまくいきません、誤った方向にお詫び申し上げます。私が考えることができるもう一つの方法は、別のPath要素をそれぞれ別のUserControlに定義し、コードビハインドにそれぞれの新しいインスタンスを適切に追加することです。理想的ではありませんが、私は周りに別の方法があるとは思わない。 Path要素をスタイルできるようにするには、カスタムコントロールを作成し、Themes.xamlでスタイルを指定するだけです。

Ratingコントロールを作成する場合は、Silverlight Toolkitのコントロールを使用する方法を説明しているthis blog postをご覧ください。

+0

興味深いですが、パスデータをPathGeometry要素に格納することは、Silverlightではサポートされていません。 – RoguePlanetoid

+0

実用的な解決策に私の答えを更新しました。 –

+0

UserControlはあなたがこれを投稿する前にこれについて考えていても完璧ですが、問題を解決しました。私はあなたが述べたRating Controlを使用することを考えましたが、単純なアプリケーションでのみ評価を表示する必要があります。 – RoguePlanetoid

関連する問題