将不同的值列表绑定到DataGridComboBoxColumn中的行。 [英] Binding different list of values to rows in a DataGridComboBoxColumn.

查看:66
本文介绍了将不同的值列表绑定到DataGridComboBoxColumn中的行。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将不同的值绑定到DataGridComboBoxColumn中的组合框。我无法绑定不同的列表,因为一旦我更改dataGridComboBoxColumn的itemSource,该特定列中的所有comboBox都会更改
的值,这不是必需的。

I am trying to bind different set of values to the combobox present in DataGridComboBoxColumn. I am not able to bind different lists as once I change the itemSource of the dataGridComboBoxColumn all the comboBox present in that particular column changes its values, which is not required.

是xaml和xaml.cs文件中的代码片段:

Below is the code snippets in xaml and xaml.cs file:

<DataGrid Grid.Row="0" Grid.ColumnSpan="2" ColumnWidth="*" x:Name="dgPR_CreateHomeMain" GotFocus="dgPR_CreateHomeMain_GotFocus" SelectionChanged="dgPR_CreateHomeMain_SelectionChanged" ItemsSource="{Binding}" ColumnHeaderStyle="{DynamicResource ColumnHeaderStyle}" AutoGenerateColumns="False" CanUserAddRows="False" HeadersVisibility="Column">
                                <DataGrid.Columns>
                                    <!--<DataGridTextColumn Header="N°" Binding="{Binding No}" Width="*" />-->
                                    <DataGridTextColumn Header="Item" Binding="{Binding Item}" Width="*" />
                                    <DataGridTextColumn Header="Sum Ins" Binding="{Binding Sum Ins}" Width="*" />
                                    
                                    <DataGridComboBoxColumn x:Name="cmbStdXS" Header="Std XS (Flx)"  SelectedValueBinding="{Binding Std XS(Flx),UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="value" SelectedValuePath="name">

 <DataGridComboBoxColumn x:Name="cmbChg" Header="Chg" SelectedItemBinding="{Binding Chg,Mode=TwoWay}" DisplayMemberPath="value" Width="*"/>
                                    <DataGridComboBoxColumn x:Name="cmbSD" Header="SD" SelectedItemBinding="{Binding SD,Mode=TwoWay}" DisplayMemberPath="value" Width="*"/>
                                    <DataGridComboBoxColumn x:Name="cmbGST" Header="GST" SelectedItemBinding="{Binding GST,Mode=TwoWay}" DisplayMemberPath="value" Width="*"/>
                                    <DataGridTextColumn Header="IX" Binding="{Binding IX}" Width="*" />

                                    <!--<DataGridTextColumn Header="" Binding="{Binding }" Width="*" />-->
                                </DataGrid.Columns>
                            </DataGrid>

标题为StdXS的DataGridComboBoxColumn需要在同一列的不同行中具有单独的值集,但无法实现。下面是xaml.cs代码背后的示例:

The DataGridComboBoxColumn with header as StdXS needs to have separate set of values in different rows in the same column, but unable to achieve that. Below is the sample of xaml.cs code behind:

dtStdXSFields = createLandingPage.ReadFieldValues("StdXS(Flx)"); cmbStdXS.SelectedValuePath = Constants.NAME; cmbStdXS.DisplayMemberPath = Constants.VALUE; cmbStdXS.ItemsSource = dtStdXSFields.DefaultView; private void dgPR_CreateHomeMain_GotFocus(object sender, RoutedEventArgs e) { DataGrid dg = (sender as DataGrid); var cI = dg.CurrentItem; string val = Convert.ToString(((System.Data.DataRowView)dg.CurrentItem).Row.ItemArray[0]); if (val.Contains("Building")) { DataTable dtStdXSFields = createLandingPage.ReadFieldValues("StdXS(Flx)Test"); cmbStdXS.SelectedValuePath = Constants.NAME; cmbStdXS.DisplayMemberPath = Constants.VALUE; cmbStdXS.ItemsSource = dtStdXSFields.DefaultView; } else if (val.Contains("Content")) { DataTable dtStdXSFields = createLandingPage.ReadFieldValues("StdXS(Flx)"); cmbStdXS.ItemsSource = dtStdXSFields.DefaultView; }

}

ReadFieldValues将返回名称为Name And Value的数据表。上述方法更改了组合框中的整个数据表列值。

ReadFieldValues will return the datatable with column names as Name And Value. The above approach changes the entire datatable column values in combobox.

下面是更清晰的图像:

现在我正在研究一种使用DataTempelate和ComboBox元素分离所有组合框项目的方法值。我也无法将值列表绑定到comboBox。任何有关此问题的帮助将不胜感激。

Right now I am working on an approach using DataTempelate and ComboBox elements for separating all comboBox Item Souce values. There also I am not able to bind list of values to comboBox. Any help on this issue will be appreciated.

提前致谢。

推荐答案

好友,看看下面的例子......

Buddy, Have a Look into the Below Example ...

Combox

<DataGridComboBoxColumn Header="Example 11" SelectedItemBinding="{Binding PartId, UpdateSourceTrigger=PropertyChanged}"> 
    <DataGridComboBoxColumn.ElementStyle> 
        <Style TargetType="ComboBox"> 
            <Setter Property="ItemsSource" Value="{Binding Path=PartIds, RelativeSource={RelativeSource AncestorType=Window}}" /> 
        </Style> 
    </DataGridComboBoxColumn.ElementStyle> 
    <DataGridComboBoxColumn.EditingElementStyle> 
        <Style TargetType="ComboBox"> 
            <Setter Property="ItemsSource" Value="{Binding Path=PartIds, RelativeSource={RelativeSource AncestorType=Window}}" /> 
        </Style> 
    </DataGridComboBoxColumn.EditingElementStyle> 
</DataGridComboBoxColumn>




温馨的问候,

IDGo


这篇关于将不同的值列表绑定到DataGridComboBoxColumn中的行。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆