2
動的に作成されたコントロールに値をバインドする際に問題があります。ユーザーがカスタムファイルを読み込んだとき、そのファイルには未知数の引数があります。引数には、グループ化されたときにtabItemをtabControlに動的に追加するGroupプロパティがあります。引き続き引数をループしてラベルを追加し、タブ内のグリッドにテキストボックスを追加します。しかし、私は、アーストのタイプに応じて異なるコントロールを使用するつもりです。私は引数Valueプロパティをテキストボックスにバインドします。タブ、ラベル、テキストボックスは上手く追加されていますが、値の束縛はありません。動的に作成されたコントロールへのバインド
私はまだこれを再考していないソリューションです。
myTab.Items.Clear();
var args = viewModel.Arguments;
var groups = args.GroupBy(arg => arg.Groups);
foreach (var group in groups)
{
TabItemExt tab = new TabItemExt();
tab.Header = group.Key;
Grid grid = new Grid();
grid.ColumnDefinitions.Add(new ColumnDefinition());
grid.ColumnDefinitions.Add(new ColumnDefinition());
int count = 0;
foreach (var argument in group)
{
RowDefinition newRow = new RowDefinition();
grid.RowDefinitions.Insert(count, newRow);
LabelTextBlock label = new LabelTextBlock();
label.Text = argument.DisplayName;
Grid.SetRow(label, count);
Grid.SetColumn(label, 0);
TextBox textBox = new TextBox();
var binding = new Binding();
binding.Source = viewModel.Arguments[argument.Name];
//binding.Source = argument
binding.Path = new PropertyPath("Value");
textBox.SetBinding(TextBlock.TextProperty, binding);
Grid.SetRow(textBox, count);
Grid.SetColumn(textBox, 1);
grid.Children.Add(label);
grid.Children.Add(textBox);
count += 1;
}
tab.Content = grid;
myTab.Items.Add(tab);
}
私は 'viewModel.Arguments [argument.Name] .Value'が有効なプロパティであると仮定しますか?コードビハインドの代わりにXAMLからコントロールを生成するために 'ItemsControl'のようなものを使用してみませんか? – Rachel
viewModel.Arguments [argument.Name] .Valueは有効なプロパティです。 – theHaggis
ビューがデータにバインドしようとしたときに見つけることができますか? – Rachel