C# 对多个项目源使用单个模板,并在UI中呈现单独的组合框
我是WPF/XAML新手,因此我陷入了一个问题:如果我在UI中创建一个combobox模板,是否可能使用一个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
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,对吗?