WPF ComboBox数据绑定xaml与代码

时间:2011-05-20 07:10:31

标签: c# wpf binding

我绝不是WPF的专家,所以这可能非常简单。我正在尝试将List绑定到组合框。它在代码中工作,在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;
    }

2 个答案:

答案 0 :(得分:2)

嗯,您需要设置主窗口的DataContext

public MainWindow()
{
    _availableActions = new List<IMapperAction>
                   {
                       new ReplaceAction(),
                       new CollapseAction(),
                       new NewBasedOnAction()
                   };

    InitializeComponent();
    DataContext = this;
    Loaded += OnWindowLoaded;
}

答案 1 :(得分:0)

根据此处的建议,您必须设置DataContext。

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

Why are DataContext and ItemsSource not redundant?