如何从WPF ComboBox DataTemplate中获取所选值

时间:2011-11-25 21:27:33

标签: wpf data-binding combobox selected

我想了解如何使用gridview视图甚至数据网格从列表视图中的组合框列中获取所选值。

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 Collection,其中包含一些工作流参数,这些参数包含另一个名为ProfileParametersList的Observable Collection,其中包含一些参数配置文件。因此,对于母系列中的每个项目,我希望从子系列中挑选一个细节,然后再处理。

我试图获取行并将它们转换为我使用的Class类型,但我无法看到在组合框中选择了什么,因为整个DetailsList就在那里。任何帮助都是apreciated

datagrid版本可能如下所示:

<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 个答案:

答案 0 :(得分:1)

在班级SelectedProfileParameter中创建一个属性WorkFlowParameter,并将其绑定到组合框的SelectedItem。这应该适合你 -

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