找回密码
 立即注册

QQ登录

只需一步,快速开始

dafeng520

论坛元老

19

主题

74

帖子

7661

积分

论坛元老

积分
7661

活字格认证

dafeng520
论坛元老   /  发表于:2013-9-23 14:15  /   查看:12034  /  回复:12
在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>

12 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-9-23 15:13:00
沙发
回复 1楼dafeng520的帖子

dafeng520 你好,

感谢你的问题反馈。

使用你提供的代码片段,我已经重现了问题。
问题一:主表(Name=fg)如果没有数据,调整列宽会报错(包括双击和拖拽)。
问题二:模板列中表,无数据,双击调整列宽会报错。

附件是我重现问题的 Demo:


接下来我会把问题反馈给产品组,在得到反馈后,我会通过帖子通知你。

谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
dafeng520
论坛元老   /  发表于:2013-10-14 14:03:00
板凳
回复 2楼iceman的帖子

C1最新版本,问题一已解决,但问题二依然存在
在模板中,表内有无数据,双击调整列都会报错,且列宽无法拖拽。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-10-14 15:20:00
地板
回复 3楼dafeng520的帖子

dafeng520 你好,

是的,问题二依然存在。

如果在实际使用过程中遇到模板中无数据情况,是否可以考虑把 CellEditingTemplate 移除?这样即避免了引发异常,又节省了性能,达提高用户体验的效果。

谢谢
回复 使用道具 举报
lik
论坛元老   /  发表于:2013-10-14 17:16:00
5#
数据都没有谈不上节省性能,怎么移除。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-10-14 18:05:00
6#
回复 5楼lik的帖子

移除方法,明天会附上代码。请稍候
回复 使用道具 举报
dafeng520
论坛元老   /  发表于:2013-10-15 08:59:00
7#
回复 6楼iceman的帖子

如果没有数据,可以采用你提出的方法解决。
但有数据时,该问题还必须解决,一不小心双击到列,软件就崩溃了。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-10-15 11:15:00
8#
回复 7楼dafeng520的帖子

dafeng520 你好,
C1FlexGrid  中 AllowResizing 设置为 Node 时则无法调整列宽。不知道能否暂时接受这个 workaround ?
代码:

  1. <Window.Resources>
  2.         <DataTemplate x:Key="EditTmpl">
  3.             <Grid>
  4.                 <c1:C1DropDown>
  5.                     <Border>
  6.                         <StackPanel>
  7.                             <c1:C1FlexGrid  AllowResizing="None">
  8.                                 <c1:C1FlexGrid.Columns>
  9.                                     <c1:Column Width="65" Header="Col1" Binding="{Binding A}" HeaderHorizontalAlignment="Center"/>
  10.                                     <c1:Column Width="80" Header="Col2" Binding="{Binding B}" HeaderHorizontalAlignment="Center"/>
  11.                                     <c1:Column Width="60" Header="Col3" Binding="{Binding C}" HeaderHorizontalAlignment="Center"/>
  12.                                     <c1:Column Width="35" Header="Col4" Binding="{Binding D}" HeaderHorizontalAlignment="Center"/>
  13.                                 </c1:C1FlexGrid.Columns>
  14.                             </c1:C1FlexGrid>
  15.                         </StackPanel>
  16.                     </Border>
  17.                 </c1:C1DropDown>
  18.             </Grid>
  19.         </DataTemplate>
  20.     </Window.Resources>
复制代码
回复 使用道具 举报
dafeng520
论坛元老   /  发表于:2013-10-15 12:45:00
9#
回复 8楼iceman的帖子

暂时先用这个解决下,希望软件尽快完善吧。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-10-15 15:31:00
10#
回复 9楼dafeng520的帖子

好的,有进一步消息,我会通过帖子通知。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部