如何为数据绑定组合框预定义组合框项?

问题描述 投票:0回答:4
c# wpf xaml data-binding combobox
4个回答
3
投票

像这样改变你的组合框:

<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
添加到似乎位于另一层的类中可能在架构上不正确。


1
投票

要使“9600”成为默认波特率,您需要添加以下行

myComboBox.SelectedIndex = 7;

9600 排在第七位

希望有帮助...


0
投票

旧线程,但让我走上了正轨:

通过添加 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>

0
投票

只需添加:

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}" />
© www.soinside.com 2019 - 2024. All rights reserved.