Как установить ItemsSource ComboBox, если он присутствовал в ItemsCotrol - PullRequest
0 голосов
/ 01 апреля 2019

Элементы ComboBox не отображались, если мы пытаемся сохранить этот комбинированный список в ItemsCotrol. Пожалуйста, нажмите здесь, чтобы понять мое требование

Мое требование состоит в том, чтобы держать комбинированный список в ItemsControl, чтобы в элементе ItemsControl qill было 5 комбинированных блоков, и в каждом комбинированном списке была коллекцияпредметы, которые мы можем выбрать.Для этого я попытался с помощью приведенного ниже кода и смог получить комбо-боксы в ItemsControl, но коллекция комбо-боксов наполняется, любые предложения или обходной путь, пожалуйста ..

<xamDataPresenter:Field Label="Reqs" BindingType="Unbound" Row="0" Column="4">
                        <xamDataPresenter:Field.CellValuePresenterStyle>
                            <Style TargetType="{x:Type xamDataPresenter:CellValuePresenter}">
                                <Setter Property="Template">
                                    <Setter.Value>
                                        <ControlTemplate TargetType="{x:Type xamDataPresenter:CellValuePresenter}">
                                            <ItemsControl Name="I" ItemsSource="{Binding Path=DataItem.CollectionCount}">
                                            <ItemsControl.ItemTemplate>
                                                <DataTemplate>
                                                    <ComboBox ItemsSource="{Binding Path=DataItem.Collection}"/>
                                                </DataTemplate>
                                            </ItemsControl.ItemTemplate>
                                        </ItemsControl>
                                        </ControlTemplate>
                                    </Setter.Value>
                                </Setter>
                            </Style>
                        </xamDataPresenter:Field.CellValuePresenterStyle>
                    </xamDataPresenter:Field>

1 Ответ

0 голосов
/ 01 апреля 2019

Хорошо, я написал самый простой из ItemsControl, чтобы попытаться объяснить, как эти вещи работают, и, надеюсь, вы сможете адаптировать их к любым элементам данных.

Итак, в ресурсах вашего окна я создал табличку с данными.Это представляет повторяющийся шаг и будет основан на DataItem.В этом случае мой DataItem имеет 2 свойства: DataItemProperty (string) и SelectedItem.SelectedItem будет иметь тот же DataType, который вы планируете показывать в комбинированном списке.

 <DataTemplate x:Key="StepTemplate">
    <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="Auto" />
        <TextBlock Text="{Binding Path=DataItemProperty}" Grid.Column="0"/>
        <ComboBox Grid.Column="1" ItemsSource="{Binding Path=DataContext.ItemsToSelectFrom, Mode=OneWay, RelativeSource={RelativeSource AncestorType=Window}}"
                          SelectedItem="{Binding Path=SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
    </Grid>
</DataTemplate>

В этом примере комбинированный список будет получать список доступных опций из кода позади / viewmodel, а неDataItem, но когда вы что-то выбираете, он обновляет свойство SelectedItem в DataItem.Затем, чтобы показать ваши элементы:

  <ItemsControl 
        Focusable="False"
        ItemTemplate="{StaticResource StepTemplate}"
        ItemsSource="{Binding Path=Steps, Mode=OneWay}" />

Итак, Steps - это свойство в моем codebehind / viewmodel, которое будет определять количество отображаемых «строк».ItemsControl позволяет легко добавлять повторяющиеся наборы данных без необходимости писать один и тот же xaml несколько раз.Надеюсь, это поможет?

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