如何在xceed datagrid中绑定combobox的Itemssource

How to bind Itemssource of combobox in xceed datagrid

我正在尝试将组合框添加到 Xceed WPF 数据网格,但无法将 Itemssource 绑定到组合框。这是数据网格的 xaml。

<xwpf:DataGridControl ItemsSource="{Binding SaleDetails}" AutoCreateColumns="False"  >
        <xwpf:DataGridControl.Columns>
            <xwpf:Column FieldName="Status" Title="Status" CellContentTemplate="{StaticResource colReinstatementType}" CellEditor="{StaticResource statusEditor}" />
        </xwpf:DataGridControl.Columns>
</xwpf:DataGridControl>

资源

    <UserControl.Resources>
    <DataTemplate x:Key="colReinstatementType">
            <ComboBox BorderThickness="0"
                      x:Name="cmbStatus1"
                      IsReadOnly="False"
                      IsEditable="True"
                      MinHeight="20"
                      DisplayMemberPath="part_no"
                      Text="{xwpf:CellEditorBinding NotifyOnSourceUpdated=True}"  
                      SelectedItem="{Binding Item, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                      ItemsSource="{Binding AvailablePartMaterial, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
            </ComboBox>
        </DataTemplate>
        <xwpf:CellEditor x:Key="statusEditor">
            <xwpf:CellEditor.EditTemplate>
                <DataTemplate>
                    <ComboBox BorderThickness="0"
                              x:Name="cmbStatus"
                              IsReadOnly="False"
                              IsEditable="True"
                              MinHeight="20"
                              DisplayMemberPath="part_no"
                              Text="{xwpf:CellEditorBinding NotifyOnSourceUpdated=True}"  
                              SelectedItem="{Binding Item, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                              ItemsSource="{Binding AvailablePartMaterial, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
                    </ComboBox>
                </DataTemplate>
            </xwpf:CellEditor.EditTemplate>
        </xwpf:CellEditor>            
     </UserControl.Resources>

ItemAvailablePartMaterial 确实存在于 SaleSheet 类型中,其集合绑定到数据网格。甚至 Item 属性 也确实被解雇了,这意味着组合框的选定项正在绑定。但是组合框中没有显示任何数据。

CellContentTemplate 仅用于显示目的。通常它用于使用类似 TextBlock 的东西来显示文本。在必须使用编辑器类型的情况下(例如布尔列上的 CheckBox),您需要将其设置为 ReadOnly 以避免任何不必要的问题。

在您的例子中,您有一个带有 CellEditorBinding 作为 CellContentTemplate 的 ComboBox。 CellEditorBinding 仅适用于 CellEditor,因此如果用户使用 CellContentTemplate 的 ComboBox 编辑行的值,则不会影响基础值。

对于您的绑定,请尝试这样的事情:

SelectedValuePath="part_no"   // name of column used to identify which record is selected
DisplayMemberPath="part_name" // name of column used to indicate the text/value to display
SelectedValue = {xwpf:CellEditorBinding} // SelectedItem or SelectedIndex can be used instead, depending on the situation/data

关于 ItemsSource,当您在 CellEditor 的 DataTemplate 中时不能直接绑定到它,您需要指明它的位置。例如:

ItemsSource="{Binding Source={x:Static Application.Current}, Path=MyData}">