如何将相同的窗口绑定为数据上下文?

时间:2018-04-02 11:51:29

标签: wpf

我在后面的Window代码中维护了Combo-Box的集合,如果我通过xaml绑定该集合意味着它无法获取集合,直到在后面的代码中为窗口外部设置DataContext。任何人都可以帮我解决这个问题。

public ObservableCollection<string> Orders
        {
            get; set;
        }
        public MainWindow()
        {         
            InitializeComponent();
            Orders = new ObservableCollection<string>();
            Orders.Add("1000");
            Orders.Add("1001");
            Orders.Add("1002");
            Orders.Add("1003");
            //this.DataContext = this;
        }

2 个答案:

答案 0 :(得分:1)

<Grid DataContext="{Binding RelativeSource={RelativeSource AncestorType=Window}}">
        <ComboBox Height="25" Width="100" ItemsSource="{Binding Orders}"></ComboBox>
</Grid>

您可以为Grid本身设置DataContext,以便在各种UI元素中使用相同的

答案 1 :(得分:0)

您可以将窗口的datacontext绑定到自身。 除非您通过以下方式移动设置数据,否则仍然无效:

        DataContext="{Binding RelativeSource={RelativeSource Self}}"
        >
    <Grid>
        <ComboBox ItemsSource="{Binding Orders}"/>
    </Grid>
</Window>

   public ObservableCollection<string> Orders
    {
        get; set;
    }
    public MainWindow()
    {
        Orders = new ObservableCollection<string>();
        Orders.Add("1000");
        Orders.Add("1001");
        Orders.Add("1002");
        Orders.Add("1003");
        InitializeComponent();
    }