我有兩列一個DataGrid:爲什麼當我離開它時,我的DataGridComboBoxColumn會清除它的值?
- DataGridComboBoxColumn
- DataGridTextColumn。
我已經設置了數據驗證,以便如果有一個值,另一個會出錯,直到它也有一個值。驗證是愚蠢的,但它提供了一些簡單的標準來做驗證,所以我可以說明這個問題。
當我在文本單元格中鍵入內容時,按Tab鍵,然後單擊第一個單元格,第一個單元格顯示它處於錯誤狀態(這是正確的)。問題是,當我從組合框下拉菜單中選擇一些內容並導航離開該單元格時(通過按Tab或單擊其他單元格),我爲組合框選擇的值消失。每當屬性發生變化時,我都會將綁定設置爲更新我的源,因此一旦選中它,它就會設置爲我選擇的值。但是,當我離開單元格時,該屬性被設置爲空。如果單元格未處於錯誤狀態,則看不到此行爲。
任何人都可以幫忙嗎?這裏是我的DataGrid中的XAML:
<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>
我無法想象我在做什麼錯。我看到這個other link似乎描述了我遇到的同樣的問題,但爲他們工作的解決方案似乎不適合我;我添加了SelectedValueBinding和SelectedValuePath,但行爲沒有改變。
我不明白這個'ClipboardContentBinding'發生了什麼,它受到了什麼屬性的影響,但是刪除'Mode = TwoWay'解決了我的問題。 Sooo ...謝謝我的猜測。 –