2014-10-16 25 views
0

我有一個包含兩列的DataGrid。一個是DataGridTextColumn,另一個是DataGridComboBoxColumn。兩者都屬於財產並且是可編輯的。所以當我改變組合框的選擇,然後點擊一些空格時,單元顯示正確的選擇。但是如果我點擊它旁邊的TextColumn,ComboBox將退出編輯模式並將選擇重置爲以前選擇的內容。DataGrid中的組合框選擇在單擊另一列時得到重置

爲什麼會發生這種情況,我該怎麼辦才能防止這種情況發生?

+0

你可以發佈DataGridComboBoxColumn的WPF代碼嗎?如果我們能看到的話,可能會有所幫助。 – 2014-10-16 11:42:44

回答

0

既然你還沒有發佈你的代碼,我正在假設你的問題是什麼。

  1. 您需要在DataGrid中指定TwoWay模式。
  2. 需要綁定屬性SelectedValueBindingDataGridComboBoxColumn

    <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}" /> 
0
<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> 
+0

有點解釋會很好。 – theoretisch 2016-12-23 07:39:59

0

檢查你列DataPropertyName財產。 我有類似的問題。 '類型'從未設置。代碼設置了兩次,但第二次錯誤。

不正確:

grcLocMill2Code.DataPropertyName = 「MillCodeId」;

grcLocMill2Code.DataPropertyName =「MillTypeId」;

正確:

grcLocMill2Code.DataPropertyName = 「MillCodeId」;

grcLocMill2Type.DataPropertyName =「MillTypeId」;

相關問題