我想在我的班级中存储名称值对。我尝试了以下内容并最终得到以下问题;
NameValeCollection
:这不成功。因为我想将此集合绑定到DataTemplate
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.
List<KeyValuePair<string,string>>
:在这种情况下,我成功绑定了键值对。但不幸的是,它仅支持OneWay
绑定。所以我也不能使用它。 请建议我处理这个问题的方法。我也不能使用Dictionary
。因为在名称值对键中不是唯一的。
答案 0 :(得分:2)
为什么不创建自己的自定义类?即。
public class MyClass
{
public string Key { get; set; }
public string Value { get; set; }
}
然后只有一个列表,或该类的可观察集合。
ObservableCollection<MyClass> MyCollection
{
get;
set;
}
请注意,如果您的馆藏值可能会发生变化,则需要在MyClass中实施INotifyProperyChanged。
答案 1 :(得分:1)
对于收藏,我建议使用ObservableCollection<T>
。
名称/值对听起来很简单,因此如果您想要对该对的名称和值进行更改通知,您可以实现具有这两个属性的类并自行更改通知(例如,通过INotifyPropertyChanged
)并使用在你的收藏中。
您可以在此处找到有关如何在课堂上实施INotifyPropertyChanged
的示例:
How to: Implement Property Change Notification
如果同时执行这两项操作,您将收到有关添加和删除名称/值对以及TwoWay
绑定名称/值对的更改通知。
答案 2 :(得分:0)
您可以使用课程Tuple。
喜欢
Tuple<string,string> t = Tuple.Create("key", "value");
string key = t.Item1;
string value = t.Item2;