いくつかのデータを可変数の列を持つDataGridにバインドする必要があります。私はそれが次のコードを使用して働かせた:WPF:動的列でDataGridバインディングを編集する方法
int n = 0;
foreach (string title in TitleList)
{
DataGridTextColumn col = new DataGridTextColumn();
col.Header = title;
Binding binding = new Binding(string.Format("DataList[{0}]", n++));
binding.Mode = BindingMode.TwoWay;
col.Binding = binding;
grid.Columns.Add(col);
}
DataListコントロールのように宣言されて
:
public ObservableCollection<double> DataList { get; set; }
とTitleListのように宣言されています。
public ObservableCollection<string> TitleList { get; set; }
問題は、私は指定されたにも関わらず、ということですTwoWayバインディングは、本当に一方向です。編集しようとするセルをクリックすると、「 'EditItem'はこのビューには許可されていません」という例外があります。私はちょうどバインディング表現で何かを逃したのですか?
P.S.私はDeborah "Populating a DataGrid with Dynamic Columns in a Silverlight Application using MVVM"の記事を見つけました。しかし、私の場合にはうまく動作するように苦労しました(具体的には、ヘッダバインディングの作業を行うことはできません)。それが機能したとしても、私はまだ一貫性のないセルスタイルのような問題に直面しています。だから私は上記のコードを少しでも微調整してもいいのだろうかと思っています。
EDIT:私の問題に関連する別の投稿を見つけました:Implicit Two Way binding。
"双方向バインディングはパスまたはXPathが必要です"というエラーが表示されます。しかし、問題は簡単に私の問題は、同様の方法で解決できるのであれば誰も私にヒントを与えることができ
<TextBox Text="{Binding Path=DataContext, RelativeSource={RelativeSource Self}}"/>
または
<TextBox Text="{Binding .}"/>
を用いて固定することができますか?
私は私の答えを編集する問題は、あなたのコレクションタイプの倍です。 – blindmeis