【WinForms】C1Flexgrid中套用模板后双击列与列中间崩溃
在C1FlexGrid中套用DataTemplate后,发现两个问题。1、模板中的Grid列无法调整列宽。
2、鼠标放在列与列中间时,鼠标图型改变,此时双击即会报错。
后发现,正常grid双击后,列宽会自动缩小,故我猜想此两个问题有一定关联。
demo代码如下(具体demo见附件):
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:c1="http://schemas.componentone.com/winfx/2006/xaml">
<Window.Resources>
<DataTemplate x:Key="EditTmpl">
<Grid>
<c1:C1DropDown>
<Border>
<StackPanel>
<c1:C1FlexGrid>
<c1:C1FlexGrid.Columns>
<c1:Column Width="65" Header="Col1" HeaderHorizontalAlignment="Center"/>
<c1:Column Width="80" Header="Col2" HeaderHorizontalAlignment="Center"/>
<c1:Column Width="60" Header="Col3" HeaderHorizontalAlignment="Center"/>
<c1:Column Width="35" Header="Col4" HeaderHorizontalAlignment="Center"/>
</c1:C1FlexGrid.Columns>
</c1:C1FlexGrid>
</StackPanel>
</Border>
</c1:C1DropDown>
</Grid>
</DataTemplate>
</Window.Resources>
<Grid>
<c1:C1FlexGrid x:Name="fg"AutoGenerateColumns="False"
AllowSorting="False"
HeadersVisibility="Column"
Background="White"
SelectionMode="ListBox">
<c1:C1FlexGrid.Columns>
<c1:Column Header="A" Binding="{Binding A}"CellEditingTemplate="{StaticResource EditTmpl}"HeaderHorizontalAlignment="Center" Width="200"/>
<c1:Column Header="B" Binding="{Binding B}"HeaderHorizontalAlignment="Center" Width="200"/>
<c1:Column Header="C" Binding="{Binding C}"HeaderHorizontalAlignment="Center" Width="200"/>
<c1:Column Header="D" Binding="{Binding D}"HeaderHorizontalAlignment="Center" Width="200"/>
</c1:C1FlexGrid.Columns>
</c1:C1FlexGrid>
</Grid>
</Window> 回复 1楼dafeng520的帖子
dafeng520 你好,
感谢你的问题反馈。
使用你提供的代码片段,我已经重现了问题。
问题一:主表(Name=fg)如果没有数据,调整列宽会报错(包括双击和拖拽)。
问题二:模板列中表,无数据,双击调整列宽会报错。
附件是我重现问题的 Demo:
接下来我会把问题反馈给产品组,在得到反馈后,我会通过帖子通知你。
谢谢 回复 2楼iceman的帖子
C1最新版本,问题一已解决:hjyzw:,但问题二依然存在:(。
在模板中,表内有无数据,双击调整列都会报错,且列宽无法拖拽。 回复 3楼dafeng520的帖子
dafeng520 你好,
是的,问题二依然存在。
如果在实际使用过程中遇到模板中无数据情况,是否可以考虑把 CellEditingTemplate 移除?这样即避免了引发异常,又节省了性能,达提高用户体验的效果。
谢谢 数据都没有谈不上节省性能,怎么移除。 回复 5楼lik的帖子
移除方法,明天会附上代码。请稍候 回复 6楼iceman的帖子
如果没有数据,可以采用你提出的方法解决。
但有数据时,该问题还必须解决,一不小心双击到列,软件就崩溃了。 回复 7楼dafeng520的帖子
dafeng520 你好,
C1FlexGrid中 AllowResizing 设置为 Node 时则无法调整列宽。不知道能否暂时接受这个 workaround ?
代码:
<Window.Resources>
<DataTemplate x:Key="EditTmpl">
<Grid>
<c1:C1DropDown>
<Border>
<StackPanel>
<c1:C1FlexGridAllowResizing="None">
<c1:C1FlexGrid.Columns>
<c1:Column Width="65" Header="Col1" Binding="{Binding A}" HeaderHorizontalAlignment="Center"/>
<c1:Column Width="80" Header="Col2" Binding="{Binding B}" HeaderHorizontalAlignment="Center"/>
<c1:Column Width="60" Header="Col3" Binding="{Binding C}" HeaderHorizontalAlignment="Center"/>
<c1:Column Width="35" Header="Col4" Binding="{Binding D}" HeaderHorizontalAlignment="Center"/>
</c1:C1FlexGrid.Columns>
</c1:C1FlexGrid>
</StackPanel>
</Border>
</c1:C1DropDown>
</Grid>
</DataTemplate>
</Window.Resources>
回复 8楼iceman的帖子
暂时先用这个解决下,希望软件尽快完善吧。 回复 9楼dafeng520的帖子
好的,有进一步消息,我会通过帖子通知。
页:
[1]
2