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

シンプル - コンボボックスを同じ DataSource にデータバインドします。


<ComboBox ItemsSource={Binding CommonItems} />

これにより、ComboBox が子である Window/UserControl の DataContext で CommonItems というパブリック プロパティが検索され、それが ItemSource として使用されます。


簡単なサンプル:

WPF アプリケーションに単純なウィンドウがある場合は、ウィンドウ コード ビハインドでコンストラクターに設定できます。

Window1()
{
  this.DataContext = this;
}

その後、複数の ItemsControl で使用するリストを設定できるパブリック プロパティ CommonItems を定義します。

 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 を作成する必要があります。通常、1 つのソース コレクションを使用し、それを両方の ComboBox にバインドすると、新しいアイテムが独自に作成されます。

アプリケーション リソースを使用することもできます。独自のスタイル (テンプレート) をグローバル リソースに追加すると、複数のコントロールで共有できます。

于 2012-12-25T17:20:17.083 に答える