2012-10-25 44 views
0

我對silverlight應用程序非常陌生。我一直在嘗試這個過去的一天,但我仍然無法做到這一點。在我的情況下,它需要三次點擊才能打開組合框。如何在datagrid中打開組合框

我的XAML代碼:

<sdk:DataGridTemplateColumn Header="Category" Width="100"> 
    <sdk:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <ComboBox Name="cmbCategory" 
       IsDropDownOpen="True" 
       ItemsSource="{Binding Source={StaticResource MyViewModel},Mode=OneWay,Path=pcProjTypeTaskCtry}" 
       DisplayMemberPath="TaskCtgyName" SelectedValuePath="TaskCtgy_FK" 
       SelectedValue="{Binding piTaskCtgy_FKField,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ToolTipService.ToolTip="{Binding psTaskCtgyNameField,UpdateSourceTrigger=PropertyChanged}"/> 
     </DataTemplate> 

    </sdk:DataGridTemplateColumn.CellTemplate> 
</sdk:DataGridTemplateColumn> 
<sdk:DataGridTemplateColumn Header="SubCategory" Width="110"> 
    <sdk:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Name="tbSubCategory" Text="{Binding Path=psTaskSubCtgyNameField,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ToolTipService.ToolTip="{Binding psTaskSubCtgyNameField}" > 
      </TextBlock> 
     </DataTemplate> 
    </sdk:DataGridTemplateColumn.CellTemplate> 
    <sdk:DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
      <ComboBox ItemsSource="{Binding Source={StaticResource MyViewModel},Mode=TwoWay,Path=pcTaskSubCtry}" 
       DisplayMemberPath="TaskSubCtgyName" SelectedValuePath="TaskSubCtgyName" 
       SelectedItem="{Binding Source={StaticResource MyViewModel},Path=SelectedSubTask,Mode=TwoWay}" 
       SelectedValue="{Binding psTaskSubCtgyNameField,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 
       ToolTipService.ToolTip="{Binding psTaskSubCtgyNameField}"> 
      </ComboBox> 
     </DataTemplate> 
    </sdk:DataGridTemplateColumn.CellEditingTemplate> 
</sdk:DataGridTemplateColumn> 
+0

你真的必須mousedown(點擊)3次才能讓組合框響應?這根本不是所期望的行爲,並且xaml中沒有任何內容會暗示它是有意的。您是否定製了所有控件模板或其他可能導致它的內容? –

回答

0

一個Dropdownopened事件添加到組合框,然後將數據源分配給後端的組合框。

 var obj = (ComboBox)sender; 
     obj.ItemsSource = Your list; 
     obj.DisplayMemberPath = "pcTaskSubCtry"; 

在選擇更改的事件中,您可以通過投射選定項目來指定所選項目,如下所示。

ComboBox cmbbox = (ComboBox)sender; 
     if (cmbbox.SelectedValue != null) 
     { 
      Yourobject obj = new Yourobject() ; 
      obj = MainDataGrid.SelectedItem as Yourobje; 
      obj.pcTaskSubCtry= Yourobje.pcTaskSubCtry; 
     }