gsq0812 发表于 2014-4-28 10:15:00

【XAML】WPF FlexGrid按Tab键绑定的int型数据没有更新问题

我在FlexGrid创建如下代码,后台绑定数据ModelID为string,SequenceID为int类型,为什么我修改ModelID的值时按Tab键,修改值显示更新,但是修改SequenceID的值时,值又恢复为原来的值,比方SequenceID原先为3,我修改为4,当按Tab键后,4自动变为3,这是为什么呢?部分Xaml代码如下      <c1:C1FlexGrid AutoGenerateColumns="False" KeyActionTab="MoveAcross">
            <c1:C1FlexGrid.Columns>
                <c1:Column ColumnName="ModelID" >
                  <c1:Column.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding ModelID}"></TextBlock>
                        </DataTemplate>
                  </c1:Column.CellTemplate>

                  <c1:Column.CellEditingTemplate>
                        <DataTemplate>
                            <TextBox Text="{Binding ModelID}" ></TextBox>
                        </DataTemplate>
                  </c1:Column.CellEditingTemplate>

                </c1:Column>
                <c1:Column ColumnName="SequenceID">
                  <c1:Column.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding SequenceID}"></TextBlock>
                        </DataTemplate>
                  </c1:Column.CellTemplate>

                  <c1:Column.CellEditingTemplate>
                        <DataTemplate>
                            <TextBox Text="{Binding SequenceID}"></TextBox>
                        </DataTemplate>
                  </c1:Column.CellEditingTemplate>
                </c1:Column>
            </c1:C1FlexGrid.Columns>

      </c1:C1FlexGrid>

roger.wang 发表于 2014-4-28 12:12:00

回复 1楼gsq0812的帖子

比方SequenceID原先为3,我修改为4,当按Tab键后,4自动变为3

抱歉,未能浮现这个问题。
我用的代码如下:

<c1:C1FlexGrid AutoGenerateColumns="False" Name="_flex" Grid.Row="0">
            <c1:C1FlexGrid.Columns>
                <c1:Column Binding="{Binding ID, Mode=TwoWay}" Width="*" />
                <c1:Column Binding="{Binding Name, Mode=TwoWay}" Width="*" />
                <!--<c1:Column Binding="{Binding Birth, Mode=TwoWay}" Width="*" />-->
                <c1:Column Binding="{Binding Birth, Mode=TwoWay, StringFormat=d}" Width="*" >
                  <c1:Column.CellEditingTemplate>
                        <DataTemplate>
                            <c1:C1DateTimePicker DateTime="{Binding Birth, Mode=TwoWay, StringFormat=d}" />
                        </DataTemplate>
                  </c1:Column.CellEditingTemplate>
                </c1:Column>

            </c1:C1FlexGrid.Columns>
      </c1:C1FlexGrid>


操作截图如下:


请帮看看是否有遗漏。

gsq0812 发表于 2014-4-28 12:43:00

回复 2楼roger.wang的帖子

我不是通过鼠标左键,而是通过Tab键来切换单元格的,而且你给出的例子不是用的TextBox和TextBlock控件?c1中有没有类似TextBox的控件,我只找到C1MaskedTextBox。

roger.wang 发表于 2014-4-28 15:02:00

回复 3楼gsq0812的帖子

1 C1中TextBox就是C1MaskedTextBox。
2 替换了1#代码中的TextBlock为C1MaskedTextBox后,可输入数字、且Tab键后可生效。

   
      <c1:C1FlexGrid AutoGenerateColumns="False" Name="_flex" Grid.Row="1" KeyActionTab="MoveAcross">
            <c1:C1FlexGrid.Columns>
                <c1:Column ColumnName="ModelID" >
                  <c1:Column.CellTemplate>
                        <DataTemplate>
                            <c1:C1MaskedTextBox Text="{Binding ID, Mode=TwoWay}"></c1:C1MaskedTextBox>
                        </DataTemplate>
                  </c1:Column.CellTemplate>
                  <c1:Column.CellEditingTemplate>
                        <DataTemplate>
                            <c1:C1MaskedTextBox Text="{Binding ID, Mode=TwoWay}" ></c1:C1MaskedTextBox>
                        </DataTemplate>
                  </c1:Column.CellEditingTemplate>
                </c1:Column>
                <c1:Column ColumnName="SequenceID">
                  <c1:Column.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding ID}"></TextBlock>
                        </DataTemplate>
                  </c1:Column.CellTemplate>
                  <c1:Column.CellEditingTemplate>
                        <DataTemplate>
                            <TextBox Text="{Binding ID}"></TextBox>
                        </DataTemplate>
                  </c1:Column.CellEditingTemplate>
                </c1:Column>
            </c1:C1FlexGrid.Columns>
      </c1:C1FlexGrid>

gsq0812 发表于 2014-4-28 15:18:00

回复 4楼roger.wang的帖子

按照这种方式替换后还是有问题,如果直接鼠标点击该单元格,然后输入数字后按Tab键,这个单元格数据确实改变了,但是,如果鼠标点击该单元格的前一个单元格,然后按Tab键进入该单元格后,直接通过键盘输入数字,然后再按一次Tab键跳转到下一单元格,则输入数字的那个单元格的值又变回原来的了。

roger.wang 发表于 2014-4-28 16:33:00

回复 5楼gsq0812的帖子

浮现情况了。
请您先用2#直接绑定的试试。

您反映的这个情况,我需要咨询一下产品研发团队,帮您找寻解决办法。

gsq0812 发表于 2014-4-28 16:36:00

回复 6楼roger.wang的帖子

好的,谢谢了。

roger.wang 发表于 2014-4-28 17:08:00

回复 7楼gsq0812的帖子

不客气, 有新消息,我会回复这个帖子和您继续沟通。
页: [1]
查看完整版本: 【XAML】WPF FlexGrid按Tab键绑定的int型数据没有更新问题