2013-08-20 157 views
0

林已如下因素WPF窗口:組合框綁定源

 <Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:ports="clr-namespace:System.IO.Ports;assembly=System" 
     Title="MainWindow" 
     SizeToContent="WidthAndHeight"> 
    <Window.Resources> 
     <ObjectDataProvider x:Key="portNames" 
          MethodName="GetPortNames" 
          ObjectType="{x:Type ports:SerialPort}" /> 
    </Window.Resources> 
    <ComboBox Name="cbox" ItemsSource="{Binding Source={StaticResource portNames}}" SelectionChanged="ComboBox_SelectionChanged" /> 

</Window> 

我米使用ObjectDataProvider的填充COM端口組合框。 但我不知道如何填充其他組合框。使用 C#功能:

private void LoadBaudRates() 
     { 
      cboxBaudRate.DataContext = new int[] { 9600, 14400, 19200, 38400, 57600, 115200, 128000 }; 
      cboxBaudRate.SelectedIndex = 0; 
     } 
     private void LoadParity() 
     { 
      cboxParity.DataContext = Enum.GetValues(typeof(Parity)); 
     } 
     private void LoadFlowControl() 
     { 
      cboxFlowControl.DataContext = Enum.GetValues(typeof(Handshake)); 
     } 
     private void LoadCOMPorts() 
     { 
      var comPorts = SerialPort.GetPortNames(); 
      //cboxCOMPorts.DataContext = comPorts; 
      this.cboxCOMPorts.DataContext = comPorts; 
     } 
+1

還有什麼其他的組合框? –

+0

@DaniDărăban,你的意思是在XAML中? – dkozl

+0

我有4個組合框,我設法填充Com端口,但其他3我不知道如何填充它們,是即時通訊xml代碼 –

回答

0

如果你想在XAML來填充其他ComboBoxes然後Enum你還可以創建ObjectDataProvider,因爲你做了與COM端口:

<ObjectDataProvider x:Key="HandshakeValues" MethodName="GetValues" ObjectType="{x:Type sys:Enum}"> 
    <ObjectDataProvider.MethodParameters> 
     <x:Type TypeName="ports:Handshake" /> 
    </ObjectDataProvider.MethodParameters> 
</ObjectDataProvider> 

<ComboBox ItemsSource="{Binding Source={StaticResource HandshakeValues}}"/> 

int數組,你可以做像這樣:

<ComboBox> 
    <ComboBox.ItemsSource> 
     <x:Array Type="{x:Type sys:Int32}"> 
     <sys:Int32>9600</sys:Int32> 
     <sys:Int32>14400</sys:Int32> 
     <sys:Int32>19200</sys:Int32> 
     <sys:Int32>38400</sys:Int32> 
     <sys:Int32>57600</sys:Int32> 
     <sys:Int32>115200</sys:Int32> 
     <sys:Int32>128000</sys:Int32> 
     </x:Array> 
    </ComboBox.ItemsSource> 
</ComboBox> 

其中sysxmlns:sys="clr-namespace:System;assembly=mscorlib"

+0

非常感謝您muuch! –

+0

這是我的速度組合框:<組合框名稱= 「cboxBaudRate」 WIDTH = 「85」 HEIGHT = 「23」 保證金= 「77,38,449,333」 的Horizo​​ntalAlignment = 「右」 VerticalAlignment = 「底」 的TabIndex =」 1「/>如果我粘貼item.source content –

+0

會出現一些錯誤什麼錯誤?你是否聲明瞭'sys'命名空間? – dkozl