WPF MultiBinding TextBox以编程方式编写文本

时间:2014-06-15 20:00:45

标签: c# wpf mvvm multibinding

我的视图中有一个ComboBox,用户可以选择动态创建的TextBox。 每个TextBox都有一个索引i,我想将它们中的每一个绑定到array[i]。 我搜索了一个解决方案,发现我需要将MultiBinding与转换器一起使用。

如何在C#代码中为TextBox设置MultiBinding,而不是在XAML中? 感谢

修改 我正在创建一个textBoxes网格,以创建一个矩阵, 我想将它们绑定到一个包含此矩阵作为向量的数组。 我的代码:

myGrid.Children.Clear();
myGrid.RowDefinitions.Clear();
myGrid.ColumnDefinitions.Clear();
int row = int.Parse(comboBoxRow.SelectedValue.ToString());
int col = int.Parse(comboBoxCol.SelectedValue.ToString());

for (int i = 0; i < row; i++)
{
    myGrid.RowDefinitions.Add(new RowDefinition());
}
for (int i = 0; i < col; i++)
{
    myGrid.ColumnDefinitions.Add(new ColumnDefinition());
}

for (int i = 0; i < row; i++)
{
    for (int j = 0; j < col; j++)
    {
        TextBox tb = new TextBox();
        tb.SetValue(Grid.RowProperty, i);
        tb.SetValue(Grid.ColumnProperty, j);
        tb.SetBinding(TextBox.TextProperty, "matrixArray[j + col * i]")
        myGrid.Children.Add(tb);
    }
}

那么我需要写什么而不是:"array[j + col * i]"

ViewModel中的

public string[] matrixArray{ get; set; }

1 个答案:

答案 0 :(得分:0)

我认为你应该写下如下内容:

tb.SetBinding(TextBox.TextProperty, string.Format("matrixArray[{0}]", j + col * i))