我绝对不是 C# 和 .NET 的新手,但是由于我已经很长时间没有使用 XAML,所以我面临一个非常简单的问题......
我创建了一个ResultsModel
这样的测试模型():
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
namespace Test_Project_
{
public class ResultsModel : INotifyPropertyChanged
{
private string _Monthly;
public string Monthly
{
get { return _Monthly; }
set { _Monthly = value; NotifyPropertyChanged("Monthly"); }
}
private string _TotalAmount;
public string TotalAmount
{
get { return _TotalAmount; }
set { _TotalAmount = value; NotifyPropertyChanged("TotalAmount"); }
}
private string _TotalInterest;
public string TotalInterest
{
get { return _TotalInterest; }
set { _TotalInterest = value; NotifyPropertyChanged("TotalInterest"); }
}
List<Dictionary<string, double>> _Items;
public List<Dictionary<string, double>> Items
{
get { return _Items; }
set { _Items = value; NotifyPropertyChanged("Items"); }
}
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this,
new PropertyChangedEventArgs(propertyName));
}
}
}
}
在我的MainPage
课上:
public ResultsModel Results;
public MainPage()
{
InitializeComponent();
Results = new ResultsModel();
DataContext = Results;
}
现在,这是问题所在:
当我试图将例如 a的属性绑定到我的模型(例如)的一些简单字符串值时,它可以工作。TextBlock
Text
Text={Binding Monthly}
现在,请注意我还有一个网格,有四列。
我想获取我的Items
属性 ( ResultsModel
) 中的所有项目,并按键在网格中显示它们。
例如
显示列表项的“A”键,在“A”列(假设网格的第一列)等。
我该怎么做(在 XAML 和/或 C# 代码中)?
更新 :
(根据建议,我尝试了以下方法,但仍然无法正常工作)
Grid
XAML内部:
<ItemsControl ItemsSource="{Binding Items, Mode=TwoWay}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Grid.Column="0" Text="{Binding Path=num}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
但我收到以下错误:
System.Windows.Data 错误:BindingExpression 路径错误:在“System.Collections.Generic.Dictionary 2[System.String,System.String]”上找不到“num”属性
2[System.String,System.String]' 'System.Collections.Generic.Dictionary
(HashCode=57616766)。BindingExpression: Path='num' DataItem='System.Collections.Generic.Dictionary`2[System.String,System.String]' (HashCode=57616766); 目标元素是'System.Windows.Controls.TextBlock'(名称='');目标属性是“文本”(类型“System.String”)..
另外,请不要将Items
其转换为字符串-字符串键值对列表。
有任何想法吗?