如果我们尝试将该组合框保留在ItemsCotrol中,则组合框项目不会显示。 Please click here for understanding my requirement
我的要求是将组合框保留在ItemsControl中,以便ItemsControl可以在其中包含5个组合框,并且每个combox都将具有可供选择的项的集合。因此,为此,我尝试使用以下代码并能够在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>
答案 0 :(得分:-2)
好吧,我已经写了ItemsControl的最基本知识,试图解释这些事情是如何工作的,希望您可以将其适应您用于数据项的任何情况。
因此,在窗口的资源中,我创建了一个数据模板。这表示重复步骤,并将基于DataItem。在这种情况下,我的DataItem具有2个属性:DataItemProperty(string)和SelectedItem。无论您打算在组合框中显示什么内容,SelectedItem的数据类型都相同。
<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中获取可用选项的列表,但是当您选择某些内容时,它将更新DataItem上的SelectedItem属性。 然后显示您的物品:
<ItemsControl
Focusable="False"
ItemTemplate="{StaticResource StepTemplate}"
ItemsSource="{Binding Path=Steps, Mode=OneWay}" />
因此,Steps是我的代码后面/视图模型中的一个属性,它将确定显示多少“行”。 itemsControl使您可以轻松添加重复的数据集,而不必多次写入同一xaml。 希望有帮助吗?