2011-11-25 80 views
1

我想了解如何從列表視圖中的組合框列中使用gridview視圖或甚至數據網格獲取選定值。如何從WPF組合框DataTemplate中獲取所選值

的XAML看起來像這樣:

<ListView Name="lstPicker" ItemsSource="{Binding}" SelectionMode="Single" Margin="6" > 
     <ListView.Resources> 
      <Style TargetType="ListViewItem"> 
       <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
      </Style> 
     </ListView.Resources> 
     <ListView.View> 
      <GridView x:Name="gridParams" ColumnHeaderContainerStyle="{StaticResource DialogueGridViewColumnHeader}" > 
       <GridViewColumn Header="Workflow Parameters" Width="Auto" DisplayMemberBinding="{Binding WorkflowParameterName}" /> 
       <GridViewColumn Header="Profile Parameters" Width="Auto"> 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <ComboBox ItemsSource="{Binding Path=ProfileParametersList}" DisplayMemberPath="ProfileParameterName" /> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
       </GridViewColumn> 
      </GridView> 
     </ListView.View> 
    </ListView> 

我想要做的是爲每個工作流參數保存在列表中從輪廓參數組合框的值。

該列表綁定到Observable集合,其中包含另一個名爲ProfileParametersList的Observable集合,其中包含一些參數配置文件。因此,對於母親收藏中的每件物品,我都希望從孩子收藏品中挑選出細節,然後再進行處理。

我試圖獲取行並將它們轉換爲我使用的類類型,但我無法查看組合框中選定的內容,因爲整個DetailsList在那裏。任何幫助apreciated

數據網格版本可以是這樣的:

<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" Name="dgPicker" CanUserAddRows="False" CanUserDeleteRows="False" > 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Workflow Parameters" Binding="{Binding WorkflowParameterName}" IsReadOnly="True" /> 
      <DataGridTemplateColumn Header="Profile Parameters"> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <ComboBox ItemsSource="{Binding ProfileParametersList}" DisplayMemberPath="ProfileParameterName" /> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
     </DataGrid.Columns> 
    </DataGrid> 

回答

1

WorkFlowParameter類創建一個屬性SelectedProfileParameter並將其綁定到您的組合框的的SelectedItem。這應該適合你 -

<DataGridTemplateColumn Header="Profile Parameters"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <ComboBox ItemsSource="{Binding ProfileParametersList}" DisplayMemberPath="ProfileParameterName" SelectedItem="{Binding SelectedProfileParameter}" /> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn>