0

クラスに名前と値のペアを保存したいと考えています。私は次のことを試しましたが、次の問題が発生しました。

  1. 使用NameValeCollection: これは成功しませんでした。DataTemplateこの Collection をasにバインドしたいからですItemsSource。コレクション内の 名前のバインドには成功しましたが、のバインドには成功しませんでした。

テンプレートと XAML

 <DataTemplate x:Key="MyCollectionTemplate">
    <Grid>
        <TextBlock Text="{Binding Mode=OneWay}"/>
        <TextBox Name="CValue" Text="{Binding Path=Value}"/> //did not work this binding
    </Grid>
 </DataTemplate>     

 <ItemsControl ItemsSource="{Binding MyCollection}"  x:Name="MyCollectionControl" ItemTemplate="{DynamicResource MyCollectionTemplate}" />   

MyCollectionそれはNameValueCollection.

  1. 使用List<KeyValuePair<string,string>>: この場合、キーと値のペアのバインドに成功しました。残念ながら、それはOneWayBinding のみをサポートしています。だからそれも使えない。

これを処理する方法を教えてください。私も同じく使えませんDictionary。名前と値のペアのキーは一意ではないためです。

4

3 に答える 3

2

独自のカスタム クラスを作成してみませんか? すなわち

public class MyClass
{
    public string Key { get; set; }
    public string Value { get; set; }
}

次に、そのクラスのリストまたは監視可能なコレクションを用意します。

ObservableCollection<MyClass> MyCollection
{
    get;
    set;
}

コレクションの値が変更される可能性がある場合は、MyClass に INotifyProperyChanged を実装する必要があることに注意してください。

于 2013-02-27T09:26:56.633 に答える
1

コレクションについては、 を使用することをお勧めしますObservableCollection<T>

名前と値のペアは単純に聞こえるので、そのペアの名前と値の両方で変更通知が必要な場合は、これら 2 つのプロパティを持つクラスを実装し、(たとえば を介してINotifyPropertyChanged) 自分で変更通知を行い、それをコレクションで使用できます。

INotifyPropertyChangedここで、クラスに実装する方法の例を見つけることができます:
方法: プロパティ変更通知を実装する

これらの両方を行うと、名前と値のペアの追加と削除、および名前と値のペアのTwoWayバインディングに関する変更通知を受け取ります。

于 2013-02-27T09:27:16.493 に答える
0

クラスTupleを使用できます。

お気に入り

Tuple<string,string> t = Tuple.Create("key", "value");
string key = t.Item1;
string value = t.Item2;
于 2013-02-27T09:51:01.603 に答える