2

私はWindowsPhone7の開発に不慣れです。設定アプリのページと非常によく似たページを作成する必要があります。このようなもの(ただし、上部のメニューと各アイテムのサブテキストはありません):(ソース:dotnetapp.com

これまでのところ、アイテムのリストボックスがありますが、アイテムの1つをクリックすると、アイテムの色が変わり、設定アプリケーションのような「プッシュボタン」効果がありません。

最初の質問は、この美しいプッシュボタン効果をどのように作成するかです(クリックの位置に応じて、ボタンを押すとボタンが傾くことに注意してください)。

2番目の質問は、アイテムのスタイルを変えることです。ItemsSourcelistBoxのは次のように定義されます。

List<string> firstList;
List<string> secondList;

public MainPage()
{
    ...
    List<string> lst = new List<string>();
    lst.AddRange(firstList);
    lst.AddRange(secondList);
    listBox1.ItemsSource = lst;
    ...

アイテムのスタイルを変える必要がありますfirstListsecondListたとえば、アイテムのfirstList色が青である場合などです。

を使ってやるべきだと思いますがStaticResource、よくわかりません。たぶん、文字列をラップして、どのリストから取得するかを定義するためのゲッターを作成する必要があります。

ありがとう。

4

1 に答える 1

1

質問1に回答します(William Mekanisのコメントを参照)

質問2の場合、1つの大きな問題があります...文字列のリストをバインドしています...どのアイテムがどのリストからのものであるかを確認するための変更はありません。データソースリストのビューモデルのようなものを作成します。

(NotifyPropertyChangedはここでは無視されます。必要に応じて実装し、ObservableCollectionも使用してください;)):

public class ListDataSourceViewModel
{
    public string Text {get; set;}
    public bool IsFromFirstList {get; set;}
}

より多くのリストがある場合は、列挙型などをリスト識別子として使用することもできます...

次のようなデータソースの新しいリストを作成します。

lst.AddRange(firstList.Select(item => new ListDataSourceViewModel 
     {
         Text = item, IsFromFirstList = true
     }
).ToArray());
lst.AddRange(secondList.Select(item => new ListDataSourceViewModel 
{
     Text = item, IsFromFirstList = false
}
).ToArray());

その後、コンバーターを使用して、テキストをテキストブロックにバインドするリストアイテムのデータテンプレートを作成し、テキストブロックのフォントの色をIsFromFirstListプロパティにバインドします。

このコードはVSなしで心から書かれています...uが問題なく貼り付けをコピーできるかどうかはわかりませんが、アイデアが得られるはずです;)データテンプレートとコンバーターの作成についてサポートが必要な場合は、教えてください!

編集:

私は自分の提案を再考しました...(潜在的な)大きなリストに特化したコンバーターを使用することは、(パフォーマンスの観点から)良い考えではありません。あなたの場合、ビューモデルで必要な色を直接使用することはとにかく問題ではありません。

私なら、変えるね

public bool IsFromFirstList {get; set;}

public Color WhatEverColor {get; set;}

VMの作成時に必要に応じて設定し、必要な場所にバインドします。

それが役に立てば幸い!

于 2012-06-12T07:18:44.817 に答える