2017-07-17 2 views
0

私は、配列に結合することについて考えてUWP C#プロジェクトにXAMLページ内の多くのバインディングを設定しようとしています、しかし、私はどのように把握することはできませんこれは、{x:Bind example}スタイルバインドの要素がプロパティである必要があるためです。C#のXAML(配列の性質?)

私が知っているが(それが正しいのですか?)C#で、それは、配列にリンクされているプロパティを持つことが可能ではないことを、私は(それが正しくない場合でも)、このような何かを意味:

Brush[] _myArray = new Brush[50]; 

    public Brush[n] myArray 
    { 
     get { return _myArray[n]; } 

     set { _myArray[n] = value; } 
    } 

私はすべての変数とプロパティを宣言し、すべてのプロパティをリストに追加し、リストの項目としてC#で明示的にアクセスすることを考えました(これはひどい解決策です)。

012と

しかし、その後、

myBrushlist[0] = new SolidColorBrush(Colors.red); 

何も私は新しいブラシであることを、リストの要素(とないプロパティ)を設定するように、それはだ、起こりません。

これは正しい方法はありますか? 「正しい方法」がない場合は、どうすれば自分のコードを修正できますか?

+0

あなたが取得しようとしています'Brush'の配列?それらをリストにバインドするには?次に、2番目のオプションはすでにブラシを追加します。それでは、ここでの質問は何ですか? – AVK

+0

xamlのいくつかの境界要素の背景にブラシをバインドしたいのですが、配列をバインドして管理することができないため(少なくとも私が考えるように)インデックスでそれらを管理できるようにリストにプロパティを追加します50以上の変数は、すべて自分の名前で混乱するでしょうが、前に示したsintaxでプロパティの値を変更することはできません。 – ek07

+0

あなたのやり方をする良い方法ではありません。コントロールのBorder、Background、Foregroundを変更したときにテーマのようなブラシを作成したい場合は、 'ResourceDictionary'を使い、' ResourceDictionary'から色をバインドすることをお勧めします。 「UWPでのResourceDictonary」を検索すると、多くの例が見つかります。 – AVK

答えて

0

としては、私はいくつかのコードの下に、リソースディクショナリを使用していた探していたものを行うための正しい方法を提案した:

XAML

... 
<Page.Resources> 
    <SolidColorBrush x:Key="n1" Color="Red"></SolidColorBrush> 
    <SolidColorBrush x:Key="n2" Color="Red"></SolidColorBrush> 
</Page.Resources> 
... 
<Grid Background="{StaticResource n1}"/> 
<Grid Background="{StaticResource n2}"/> 

C#の

SolidColorBrush myResource= (SolidColorBrush)this.Resources["n" + Convert.ToString(myIndexInt)]; 
myResource.Color = Colors.Red;