C# 对多个项目源使用单个模板,并在UI中呈现单独的组合框

C# 对多个项目源使用单个模板,并在UI中呈现单独的组合框,c#,wpf,xaml,combobox,C#,Wpf,Xaml,Combobox,我是WPF/XAML新手,因此我陷入了一个问题:如果我在UI中创建一个combobox模板,是否可能使用一个combobox来呈现多项目源?例如,我有两个项目源A和B,在XAML中我有一个公共模板。那么,我是否可以从单个模板在UI中为A和B创建两个不同的组合框 我正在使用下面的模板进行创建 <ComboBox x:Name="comboboxtemplate" ItemsSource="{Binding CboItemsource}" SelectedItem="{Binding comb

我是WPF/XAML新手,因此我陷入了一个问题:如果我在UI中创建一个combobox模板,是否可能使用一个
combobox
来呈现多项目源?例如,我有两个项目源A和B,在XAML中我有一个公共模板。那么,我是否可以从单个模板在UI中为A和B创建两个不同的组合框

我正在使用下面的模板进行创建

<ComboBox x:Name="comboboxtemplate" ItemsSource="{Binding CboItemsource}" SelectedItem="{Binding comboboxSelecteditem, Mode=TwoWay}"
          Visibility="{Binding ShowCombobox, UpdateSourceTrigger=PropertyChanged}" Width="{Binding ComboboxWidth, UpdateSourceTrigger=PropertyChanged}"
          IsEnabled="{Binding FieldValueIsEditable, UpdateSourceTrigger=PropertyChanged}" 
          IsTextSearchCaseSensitive="False"
          IsTextSearchEnabled="True"
          TextSearch.TextPath="Description">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Code}" Width="0"/>
                <TextBlock Text= "{Binding Description}" TextWrapping="Wrap" />
            </StackPanel>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

您可以创建一个应用于两个
组合框的样式,例如:

<Window x:Class="WpfApplication1.Window1"
        ...>
    <Window.Resources>
        <Style x:Key="cmbStyle" TargetType="ComboBox">
            <Setter Property="Visibility" Value="{Binding ShowCombobox, UpdateSourceTrigger=PropertyChanged}" />
            <Setter Property="IsEnabled" Value="{Binding FieldValueIsEditable, UpdateSourceTrigger=PropertyChanged}" />
            <Setter Property="IsTextSearchEnabled" Value="True" />
            <!-- ... -->
            <Setter Property="ItemTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{Binding Code}" Width="0"/>
                            <TextBlock Text= "{Binding Description}" TextWrapping="Wrap" />
                        </StackPanel>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>
    <StackPanel>

        <ComboBox x:Name="cmb1" ItemsSource="{Binding CboItemsource}"
                  SelectedItem="{Binding comboboxSelecteditem, Mode=TwoWay}"
                  Style="{StaticResource cmbStyle}" />

        <ComboBox x:Name="cmb2" ItemsSource="{Binding OtherItemsource}"
                  SelectedItem="{Binding OtherSelecteditem, Mode=TwoWay}"
                  Style="{StaticResource cmbStyle}" />
    </StackPanel>
</Window>


不太清楚您想做什么。WPF为XAML元素的重用提供了几种不同的机制。似乎最有可能通过定义
来解决您的场景,但其他选项包括制作
UserControl
DataTemplate
,这两个选项都允许重用XAML元素。你应该简化并详细说明你的例子,这样你就可以很好地展示你的尝试,并准确地说明你想要实现的目标。根据我的理解,你想在多个组合框中使用DataTemplate,对吗?