在FrameworkElementFactory中设置SelectedValue绑定

时间:2014-09-25 13:20:00

标签: c# wpf datagrid

首先抱歉我的英语。 我遇到了问题,我无法弄清楚如何解决问题。我有一个带有DataGrid对象的列表(finalList)。我在DataGrid中动态创建列和行。我有一个List>我在哪里生成行。我的问题是,当我创建一个FrameworkElement typeof(TextBox)时,绑定效果很好。但是当我使用组合框创建框架元素时,我可以看到选项,但我无法设置SelectedValueBinding。因此组合框显示选项,但从不以选定的开始。

这就是我动态创建列的方法

FrameworkElementFactory frameElementFactory = new FrameworkElementFactory(typeof(ComboBox)); 
itemsSourceBinding.Source = finalList;
frameElementFactory.SetBinding(ComboBox.ItemsSourceProperty, itemsSourceBinding);

这是我的XAML

<DataGrid x:Name="UC_CopyReferenceGrid" HorizontalScrollBarVisibility="Auto"  VerticalScrollBarVisibility="Auto" Grid.Row="0" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False"  Margin="10,10,246,10"></DataGrid>

我需要将绑定添加到FrameworkElementFactory。

谢谢!

1 个答案:

答案 0 :(得分:0)

ItemsSource绑定是否正常运行?如果是这样,则绑定SelectedValue

的过程或多或少相同
frameElementFactory.SetBinding(
    Selector.SelectedValueProperty,
    new Binding {
        Path = new PropertyPath(ContentControl.ContentProperty), // ?
        Mode = BindingMode.TwoWay
    }
);

我对绑定路径不肯定;它应该与其他列相同。

通常,当逻辑值是SelectedValue中项目的子属性时,会使用ItemsSource,在这种情况下,您可能还需要使用SelectedValuePath属性来指定财产路径。否则,您只需使用SelectedItem