将datagrid与表单绑定

时间:2016-03-07 20:12:17

标签: c# wpf xaml

我在用户控件中有一个datagrid,我可以使用不同的对象以编程方式填充数据网格,具体取决于具有不同列数的对象类型。 当我选择一个元素时,我想做一个绑定,用不同的数据填充其他用户控件,这些数据是带有文本框的表单。但我没有属性来做绑定,我不知道该怎么做。

主窗口

<window ...
xmlns:gf="clr-namespace:GenericForms"/>
<gf:TypePanel x:Name="myTypePanel" Margin="10" Grid.Row="0" InnerValue="{Binding SelectedItem, ElementName=myTypeGrid}"/>
<gf:TypeGrid x:Name="myTypeGrid" Margin="10" Grid.Row="2"/>

TypeGrid

<Grid>
        <DataGrid Grid.Row="0" x:Name="dataGrid" HorizontalAlignment="Left" Margin="10" VerticalAlignment="Top"
                  SelectedItem="{Binding SelectedItem, ElementName=ThisControl,Mode=TwoWay}" SelectionMode="Single"/>
    </Grid>

TypePanel

<StackPanel x:Name="root">
</StackPanel>

类型面板填充了对象

的功能方法
public static readonly DependencyProperty InnerValueProperty =
        DependencyProperty.Register("InnerValue", typeof(Object), typeof(TypePanel));


public Object InnerValue
{
    get { return (Object)GetValue(InnerValueProperty); }
    set
    {
        SetValue(InnerValueProperty, value);
        if (value == InnerValue)
        {
            UpdateBindings();
         }
    }
    }

类型网格填充数组对象:

foreach (var item in innerFields)
{
    column.Binding = new Binding(item.Key) { Mode = BindingMode.TwoWay };
    dataGrid.Columns.Add(column);
}

            /* add items rows */
foreach (var item in innerValues)
{
    dataGrid.Items.Add(item);
}

0 个答案:

没有答案