我有一個包含兩列的DataGrid。一個是DataGridTextColumn,另一個是DataGridComboBoxColumn。兩者都屬於財產並且是可編輯的。所以當我改變組合框的選擇,然後點擊一些空格時,單元顯示正確的選擇。但是如果我點擊它旁邊的TextColumn,ComboBox將退出編輯模式並將選擇重置爲以前選擇的內容。DataGrid中的組合框選擇在單擊另一列時得到重置
爲什麼會發生這種情況,我該怎麼辦才能防止這種情況發生?
我有一個包含兩列的DataGrid。一個是DataGridTextColumn,另一個是DataGridComboBoxColumn。兩者都屬於財產並且是可編輯的。所以當我改變組合框的選擇,然後點擊一些空格時,單元顯示正確的選擇。但是如果我點擊它旁邊的TextColumn,ComboBox將退出編輯模式並將選擇重置爲以前選擇的內容。DataGrid中的組合框選擇在單擊另一列時得到重置
爲什麼會發生這種情況,我該怎麼辦才能防止這種情況發生?
既然你還沒有發佈你的代碼,我正在假設你的問題是什麼。
DataGrid
中指定TwoWay
模式。需要綁定屬性SelectedValueBinding
在DataGridComboBoxColumn
<DataGridComboBoxColumn x:Name="DropDownComboBox" SelectedValueBinding="{Binding Path=FieldFromData}" Header="SomeName" IsReadOnly="False"/>
在代碼中定義的組合框的內容。
DropDownComboBox.ItemsSource = Enum.GetValues(typeof(ValuesPossible));
如果您沒有設置綁定到數據集您顯示的屬性,它將是一個下拉不會改變任何地方的數據的價值。上面的示例使用可以選擇的值來填充組合框,並選擇FieldFromData的數據集中包含的內容。
您還需要以雙向模式綁定DataGrid以允許所選值更改該字段。
<DataGrid ..<properties>.. ItemsSource="{Binding DataCollection,Mode=TwoWay}" />
<DataGridTemplateColumn Visibility="Visible" Header="Reason Id" Width="250">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<ComboBox x:Name="" SelectedValue="{Binding TypeId}" SelectedValuePath="TypeId" DisplayMemberPath="Type"
ItemsSource="{Binding TypeItems}" ></ComboBox>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
有點解釋會很好。 – theoretisch 2016-12-23 07:39:59
檢查你列DataPropertyName財產。 我有類似的問題。 '類型'從未設置。代碼設置了兩次,但第二次錯誤。
不正確:
grcLocMill2Code.DataPropertyName = 「MillCodeId」;
grcLocMill2Code.DataPropertyName =「MillTypeId」;
正確:
grcLocMill2Code.DataPropertyName = 「MillCodeId」;
grcLocMill2Type.DataPropertyName =「MillTypeId」;
你可以發佈DataGridComboBoxColumn的WPF代碼嗎?如果我們能看到的話,可能會有所幫助。 – 2014-10-16 11:42:44