Как получить выбранное значение из шаблона данных WPF ComboBox - PullRequest
1 голос
/ 26 ноября 2011

Я хочу узнать, как получить выбранное значение из столбца комбинированного списка в виде списка с представлением сетки или даже сеткой данных.

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>

Что я хочу сделать, это сохранить для каждого параметра рабочего процесса в списке значение из списка параметров профиля.

Список связан с Наблюдаемой коллекцией с некоторыми параметрами рабочего процесса, которая содержит другую Наблюдаемую коллекцию с именем ProfileParametersList, которая содержит некоторые профили параметров. Поэтому для каждого предмета в материнской коллекции я хочу, чтобы деталь была выбрана из дочерней коллекции и затем обработана.

Я попытался получить строки и привести их к типу Class, который я использую, но я не могу увидеть, что было выбрано в выпадающем списке, так как там есть весь DetailsList. Любая помощь приветствуется

Версия сетки данных может выглядеть следующим образом:

<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 Ответ

1 голос
/ 26 ноября 2011

Создайте свойство SelectedProfileParameter в своем классе WorkFlowParameter и привяжите его к SelectedItem вашего комбинированного списка.Это должно работать для вас тогда -

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