我在用户控件中有一个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);
}