WPF ComboBox 数据绑定 xaml 与代码

本文关键字:代码 xaml 数据绑定 ComboBox WPF | 更新日期: 2023-09-27 17:57:24

我绝不是WPF方面的专家,所以这可能非常简单。我正在尝试将列表绑定到组合框。它在代码中工作,在 xaml 中不起作用。如果我从构造函数中删除 ItemsSource,它不起作用,这就是我知道的。我以为我在 xaml 中有等效的,但显然不是。

XAML:

    <ComboBox Height="23"
              HorizontalAlignment="Left"
              Margin="146,76,0,0"
              Name="comboBox1"
              VerticalAlignment="Top"
              Width="120"
              ItemsSource="{Binding AvailableActions}"
              DisplayMemberPath="Name"
              SelectedValuePath="Name"
              SelectedValue="Replace" />

构造 函数:

    public MainWindow()
    {
        _availableActions = new List<IMapperAction>
                       {
                           new ReplaceAction(),
                           new CollapseAction(),
                           new NewBasedOnAction()
                       };
        InitializeComponent();
        Loaded += OnWindowLoaded;
        comboBox1.ItemsSource = AvailableActions;
    }

WPF ComboBox 数据绑定 xaml 与代码

好吧,您需要设置主窗口的DataContext

public MainWindow()
{
    _availableActions = new List<IMapperAction>
                   {
                       new ReplaceAction(),
                       new CollapseAction(),
                       new NewBasedOnAction()
                   };
    InitializeComponent();
    DataContext = this;
    Loaded += OnWindowLoaded;
}

正如这里建议的,你必须设置数据上下文。

您还可以阅读此链接以了解为什么以及何时应使用两者中的哪一个:

为什么 DataContext 和 ItemsSource 不是冗余的?