2012-12-25 109 views
2

我想顯示多個ComboBox es中的相同ComboBoxItem s。多個組合框的相同內容

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

有沒有簡單的方法來做到這一點,而不重複的代碼,只有在XAML(不使用代碼隱藏)?

回答

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> 
0

簡單 - 將Comboboxes數據綁定到相同的DataSource。


<ComboBox ItemsSource={Binding CommonItems} /> 

這將在窗口/用戶控件的DataContext的搜索,該組合框是一個公共財產稱爲CommonItems的孩子,並用它作爲一個的ItemSource。


快速樣品:

如果你有一個WPF應用程序中的簡單的窗口,在窗口後面的代碼,你可以在構造函數中設置:

Window1() 
{ 
    this.DataContext = this; 
} 

之後,定義一個公共屬性CommonItems,您可以在其中設置要在多個ItemsControl中使用的列表:

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

,並且在Window UI代碼(xaml文件)中,您可以將CommonItems列表用作多個控件的ItemSource,它將起作用。

+0

如果你不知道如何使用數據綁定,什麼是與DataContexts交易,你應該對一些教程閱讀了,因爲從我或其他人快速樣品不會幫助你,因爲你不會明白它爲什麼有效。快樂編碼! – dutzu

+0

我會延長我的答案與更多信息... – dutzu

+0

我想這樣做沒有代碼隱藏。 – Elmo

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; 

//如果沒有後面的方法的代碼:

你需要爲每個組合框創建新ComboBoxItems。通常你會使用一個源集合和bind這兩個組合框,然後他們將自己創建新的項目。您可以使用application resources。將您自己的樣式(模板)添加到全局資源中,可讓您與多個控件共享它。