【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> 回复 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>
操作截图如下:
请帮看看是否有遗漏。 回复 2楼roger.wang的帖子
我不是通过鼠标左键,而是通过Tab键来切换单元格的,而且你给出的例子不是用的TextBox和TextBlock控件?c1中有没有类似TextBox的控件,我只找到C1MaskedTextBox。 回复 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>
回复 4楼roger.wang的帖子
按照这种方式替换后还是有问题,如果直接鼠标点击该单元格,然后输入数字后按Tab键,这个单元格数据确实改变了,但是,如果鼠标点击该单元格的前一个单元格,然后按Tab键进入该单元格后,直接通过键盘输入数字,然后再按一次Tab键跳转到下一单元格,则输入数字的那个单元格的值又变回原来的了。 回复 5楼gsq0812的帖子
浮现情况了。
请您先用2#直接绑定的试试。
您反映的这个情况,我需要咨询一下产品研发团队,帮您找寻解决办法。 回复 6楼roger.wang的帖子
好的,谢谢了。 回复 7楼gsq0812的帖子
不客气, 有新消息,我会回复这个帖子和您继续沟通。
页:
[1]