我有一个资源字典,我希望在其中有一个共同的DataTemplate for ComboBox。
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<DataTemplate DataType="{x:Type ComboBox}">
<StackPanel Orientation="Horizontal">
<!--Here I need to use something like For Loop-->
<TextBlock Text=""></TextBlock>
</StackPanel>
</DataTemplate>
</ResourceDictionary>
现在我创建了一个名为NoOfColumns的整数类型的依赖项属性。在声明comboBox时,我需要设置NoOfColumns属性以自动生成该列数。我希望他们databind
。
根据Joe的要求进行更新
<ComboBox x:Name="cbUnder" ItemsSource="{Binding GroupsAndCorrespondingEffects}"
IsEditable="True" SelectedItem="{Binding SelectedGroup, Mode=TwoWay}"
Text="{Binding InputValue, UpdateSourceTrigger=PropertyChanged}" TextSearch.TextPath="GroupName"
Grid.Column="1" Grid.ColumnSpan="4" Grid.Row="3">
<ComboBox.Resources>
<DataTemplate DataType="{x:Type vm:GroupAndCorrespondingEffect}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding GroupName}" Width="250">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding IsHighlighted}" Value="True">
<Setter Property="Foreground" Value="Blue" />
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBlock Text="{Binding CorrespondingEffect}" />
</StackPanel>
</DataTemplate>
</ComboBox.Resources>
</ComboBox>
答案 0 :(得分:4)
XAML中没有for
,但ItemsControl
与foreach
非常相似。不要设置int
属性,而是创建ObservableCollection<T>
并向其添加许多对象,然后将ItemsControl
绑定到您的集合属性。
这具有额外的好处,即每个集合项可以暴露要绑定的属性,例如,如果要在每个TextBlock
中显示不同的文本,可以在集合项上放置一个属性,并将TextBlock
绑定到该属性。