像这样改变你的组合框:
<ComboBox Name="comboBox1" Width="120"
ItemsSource="{Binding Path=ValidBaudRateCollection}">
<ComboBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding }"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
将这些添加到您的
SerialComm
课程中:
public ObservableCollection<int> ValidBaudRateCollection;
public SerialComm()
{
this.ValidBaudRateCollection = new ObservableCollection<int>(this.ValidBaudRate);
_serialPort = new SerialPort();
}
最后将它们添加到您的
Window
中的某个位置(例如构造函数)
SerialComm s = new SerialComm();
comboBox1.DataContext = s;
comboBox1.ItemsSource = s.ValidBaudRateCollection;
comboBox1.SelectedIndex = 6;
注意: 这样您就可以绑定组合框值,但是将
添加到似乎位于另一层的类中可能在架构上不正确。ObservableCollection
要使“9600”成为默认波特率,您需要添加以下行
myComboBox.SelectedIndex = 7;
9600 排在第七位
希望有帮助...
旧线程,但让我走上了正轨:
通过添加 SelectedValuePath="Content" 并将其保存到 SelectedValue 来解决它。
<ComboBox
SelectedValue="{Binding LaserBaudRate, UpdateSourceTrigger=PropertyChanged}"
SelectedValuePath="Content">
<ComboBoxItem Content="75" />
<ComboBoxItem Content="110" />
<ComboBoxItem Content="300" />
<ComboBoxItem Content="1200" />
<ComboBoxItem Content="2400" />
<ComboBoxItem Content="4800" />
<ComboBoxItem Content="9600" />
<ComboBoxItem Content="19200" />
<ComboBoxItem Content="38400" />
<ComboBoxItem Content="57600" />
<ComboBoxItem Content="115200" />
</ComboBox>
只需添加:
private int selectedBaudRate;
public Constructor()
{
SelectedBaudRate = Properties.Settings.Default.SelectedBaudRate;
}
public int SelectedBaudRate
{
get => selectedBaudRate;
set
{
if (value != selectedBaudRate)
{
OnPropertyChanging();
selectedBaudRate = value;
Properties.Settings.Default.SelectedBaudRate = value;
OnPropertyChanged();
}
}
}
<ComboBox
Width="80"
ItemsSource="{Binding AvailableBaudRate}"
SelectedValue="{Binding SelectedBaudRate, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" />