私は間違いなく 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}
ここで、4 つの列を持つグリッドもあることに注意してください。
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 パス エラー: 'num' プロパティが 'System.Collections.Generic.Dictionary
2[System.String,System.String]' 'System.Collections.Generic.Dictionary
2[System.String,System.String]' に見つかりません (HashCode=57616766)。BindingExpression: Path='num' DataItem='System.Collections.Generic.Dictionary`2[System.String,System.String]' (HashCode=57616766); ターゲット要素は 'System.Windows.Controls.TextBlock' (Name='') です。ターゲット プロパティは 'Text' (タイプ 'System.String') です。
また、Items
文字列と文字列のキーと値のペアのリストに変換されていないことを確認してください。
何か案は?