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模式,必须点击后进入编辑模式时才能选择下拉内容;如何不用进入编辑模式,默认显示可选的下拉在列表上?如下图所示效果
回复 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["First"];
col.ValueConverter = new ColumnValueConverter(Customer.GetFirstNames(), false);
这里面Customer.GetFirstNames()是一个字符串集合。
页:
[1]