Wpf 为什么当我离开DataGridComboxColumn时,它会清除它的值?
我有一个包含两列的DataGrid:Wpf 为什么当我离开DataGridComboxColumn时,它会清除它的值?,wpf,data-binding,validation,datagridcomboboxcolumn,Wpf,Data Binding,Validation,Datagridcomboboxcolumn,我有一个包含两列的DataGrid: DataGridComboxColumn DataGridTextColumn 我已经设置了数据验证,这样,如果一个有值,另一个将出错,直到它也有值为止。验证是愚蠢的,但它提供了一些简单的标准来进行验证,所以我可以说明这个问题 当我在文本单元格中键入内容时,按tab键,然后单击第一个单元格上的back,第一个单元格显示它处于错误状态(这是正确的)。问题是,当我从“组合框”下拉列表中选择某个内容并离开该单元格时(通过按tab键或在另一个单元格中单击),我为组合
<DataGrid Grid.Row="2"
Name="GrdData"
ItemsSource="{Binding Path=Dvm.Data}"
SelectedItem="{Binding Path=Dvm.SelectedData, Mode=TwoWay}"
CanUserAddRows="True"
CanUserDeleteRows="False"
AutoGenerateColumns="False"
Margin="5"
SelectionMode="Single"
IsEnabled="{Binding Path=IsGridEnabled}">
<DataGrid.Columns>
<DataGridComboBoxColumn Header="Column 1"
SelectedItemBinding="{Binding Path=Col1, Mode=TwoWay, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"
Width="*"
DisplayMemberPath="Description">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=DropDownValues, Mode=OneWay}" />
<Setter Property="IsSynchronizedWithCurrentItem" Value="False"/>
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=DropDownValues, Mode=OneWay}"/>
<Setter Property="IsDropDownOpen" Value="True" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
<DataGridTextColumn Header="Column 2"
Binding="{Binding Path=Col2, Mode=TwoWay, ValidatesOnDataErrors=True}"
Width="*"/>
</DataGrid.Columns>
</DataGrid>
我无法想象我做错了什么。我看到这似乎描述了我面临的相同问题,但对他们有效的解决方案似乎对我不起作用;我添加了SelectedValueBinding和SelectedValuePath,但行为没有改变。从绑定中删除
Mode=TwoWay
该问题是由剪贴板和自动化支持中的错误引起的。通过将单元格上的特殊属性设置为ClipboardContentBinding
,然后读取该值,可以实现这一点。如果绑定是双向的,它有时会将旧值从特殊属性推回到视图模型,验证错误似乎会触发这种行为<如果ClipboardContentBinding
为空,则code>datagridboxcolumns和datagridcomboxcolumns
将提供Binding
或SelectedItemBinding
,因此如果将其中任何一个设置为two-way
绑定,将出现此错误
如果不设置
模式
,它将是默认值
,并使用属性中的默认值,即文本框的双向
。文本
和组合框。对于特殊剪贴板属性,选择EdItem
但选择单向
我不明白这个ClipboardContentBinding发生了什么,以及它影响了什么属性,但是删除Mode=TwoWay
为我解决了这个问题。Sooo…谢谢,我想。我想了解更多关于这个bug的信息,以及剪贴簿内容绑定是否可以被操纵来引起或删除它。