CanYou8 发表于 2016-1-25 15:17:00

C1FlexGrid如何实现下拉绑定效果?

如题,C1FlexGrid绑定下拉时,如何绑定?
如下代码,绑定失败,请帮忙看一下。
      <c1:C1FlexGrid Name="_processFlowFlexGrid" Grid.Row="1" Grid.Column="0" Grid.RowSpan="2"
                     AutoGenerateColumns="False" AllowAddNew="False" AllowSorting="False"
                     IsReadOnly="False" HeadersVisibility="Column"
                     Style="{StaticResource Green}" MinHeight="560" BorderThickness="1"
                     SelectionMode="Cell" ChildItemsPath="Children" MaxRowHeight="20"
                     ItemsSource="{Binding ProcessFlowList,IsAsync=True}"
                     SelectedItem="{Binding CurrentProcessFlow,Mode=TwoWay}"
                     PreviewKeyDown="_processFlowFlexGrid_PreviewKeyDown"
                     PreviewKeyUp="_processFlowFlexGrid_PreviewKeyUp"
                     CellEditEnded="_processFlowFlexGrid_CellEditEnded">
            <c1:C1FlexGrid.Columns>
                <c1:Column Header="参数值" ColumnName="ParamValue" Width="*" >
                  <c1:Column.CellTemplate>
                        <DataTemplate>
                            <StackPanel Name="StackPanel" VerticalAlignment="Center" Margin="10,0,0,0">
                              <TextBlock VerticalAlignment="Center" Cursor="Hand" Name="ParameterItem" Text="{Binding ParamValue}"/>
                            </StackPanel>
                        </DataTemplate>
                  </c1:Column.CellTemplate>
                  <c1:Column.CellEditingTemplate>
                        <DataTemplate>
                            <c1:C1ComboBox Style="{StaticResource Grid-AutoComboBox-List}" DisplayMemberPath="name" SelectedValuePath="value"
                                           ItemsSource="{Binding Path=DataContext.ParamValueList,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=basicControls:BaseWindow}}"
                                           SelectedValue="{Binding ParamValue, Mode=TwoWay}"/>
                        </DataTemplate>
                  </c1:Column.CellEditingTemplate>
                </c1:Column>
            </c1:C1FlexGrid.Columns>
      </c1:C1FlexGrid>

另外,如果采用CellEditingTemplate模式,必须点击后进入编辑模式时才能选择下拉内容;如何不用进入编辑模式,默认显示可选的下拉在列表上?如下图所示效果

Alice 发表于 2016-1-25 17:35:00

回复 1楼CanYou8的帖子

你提到了两种下拉列表,一种是C1FlexGrid给EditTemplate设置为ComboBox控件,进入编辑状态后就会变成下拉列表。
这个的实现方式就是我们随机安装示例:
Documents\ComponentOne Samples\WPF\C1.WPF.FlexGrid\CS\ComboBox
绑定失败我测试了下没有重现。您可以看看示例,如果还有问题,需要给我们提供一个可以重现的Demo。

另一种就是内置的,使用内置的IValueConverter实现数据类型的转换。内置的ColumnValueConverter有三种:
ColumnValueConverter(IDictionary dictionary)
ColumnValueConverter(ICollection values, bool exclusive)
ColumnValueConverter(IEnumerable values, string valuePath, string displayMemberPath)

您提到的示例就是创建了一个新的ColumnValueConverter对象,传入参数是一个集合,然后就以列表的形式展示集合。
代码参考:
   col = _flexEdit.Columns[&quot;First&quot;];
            col.ValueConverter = new ColumnValueConverter(Customer.GetFirstNames(), false);
这里面Customer.GetFirstNames()是一个字符串集合。
页: [1]
查看完整版本: C1FlexGrid如何实现下拉绑定效果?