2

我想ComboBoxItem在多个ComboBoxes中显示相同的s。

<ComboBox>
    <ComboBoxItem Content="1" />
    <ComboBoxItem Content="2" />
    <ComboBoxItem Content="3" />
    <ComboBoxItem Content="4" />
    <ComboBoxItem Content="5" />
</ComboBox>

有没有一种简单的方法可以做到这一点而无需重复代码并且仅在 XAML 中(不使用代码隐藏)?

4

3 回答 3

3

要回答您的问题,您可以在 Xaml 中创建一个通用数组并将其分配给您的 ComboBox 的 ItemsSource。它看起来像这样。这可以放入您的应用程序资源中,以实现程序范围内的可见性。

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:system="clr-namespace:System;assembly=mscorlib"
    Title="MainWindow" Height="350" Width="525">
   <Window.Resources>
       <x:ArrayExtension x:Key="myArray" Type="system:String">
           <system:String>1</system:String>
           <system:String>2</system:String>
           <system:String>3</system:String>
           <system:String>4</system:String>
           <system:String>5</system:String>
       </x:ArrayExtension>
   </Window.Resources>
   <Grid>
       <ComboBox Height="23" ItemsSource="{StaticResource myArray}" HorizontalAlignment="Left" Margin="10,10,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120" />
       <ComboBox Height="23" ItemsSource="{StaticResource myArray}" HorizontalAlignment="Left" Margin="148,10,0,0" Name="comboBox2" VerticalAlignment="Top" Width="120" />
   </Grid>
</Window>
于 2012-12-25T17:38:57.060 回答
0

简单 - 将组合框数据绑定到相同的数据源。


<ComboBox ItemsSource={Binding CommonItems} />

这将在 ComboBox 是其子级的 Window/UserControl 的 DataContext 中搜索名为 CommonItems 的公共属性,并将其用作 ItemSource。


快速示例:

如果你在 WPF 应用程序中有一个简单的窗口,在 Window 后面的代码中你可以在构造函数中设置:

Window1()
{
  this.DataContext = this;
}

之后,定义一个公共属性 CommonItems,您可以在其中设置要在多个 ItemsControls 中使用的列表:

 public List<string> CommonItems {get;set;}

并且在 Window UI 代码(xaml 文件)中,您可以将 CommonItems 列表用作多个控件的 ItemSource,它将起作用。

于 2012-12-25T16:54:55.237 回答
0
   var priceList = new List<int>
                        {
                            1,
                            2,
                            3,
                            4,
                            5
                        };

    //Now we can use CopyTo() Method

    priceList.CopyTo(insuredList);


    ComboBox1.Datasource=priceList;
    ComboBox2.Datasource=insuredList;

//方法后面没有代码:

您需要为每个 ComboBox 创建新的 ComboBoxItems。通常您会使用一个源集合并将其绑定到两个 ComboBox,然后它们将自行创建新项目。

您还可以使用应用程序资源。将您自己的样式(模板)添加到全局资源允许您与多个控件共享它。

于 2012-12-25T17:20:17.083 回答