如何从xaml绑定到代码隐藏中的可观察集合

时间:2010-05-22 17:30:22

标签: observablecollection data-binding

我怎么能绑定到这个observablecollection

(MainPage.xaml.cs中)

public ObservableCollection tabs = new ObservableCollection();

在xaml?我试过了

(MainPage.xaml中)

但没有任何运气

2 个答案:

答案 0 :(得分:1)

一个常见的模式是在您加载的事件中设置DataContext,假设您要将其绑定到页面上名为 TabControl tabs_control

public MainPage()
{
    InitializeComponent();
    Loaded += OnLoaded;
}

protected void OnLoaded(object sender, RoutedEventArgs e)
{
    //Initialize tabs collection
    tab_control.ItemsSource = tabs;
}

显然你应该替换你想要绑定的实际控件。

修改

根据您的评论,您可以做的只是将控件设置为数据上下文,然后您的XAML绑定应该有效。所以不要超过你,你会这样做:

protected void OnLoaded(obejct sender, RoutedEventArgs e)
{
    this.DataContext = this;
}

然后在你的XAMl中你可以这样做:

<TabControl ItemsSource={Binding tabs} ... />

答案 1 :(得分:0)

使用WPF的XAML绑定语法。

<YourControl ItemSource="{Binding tabs} />

您还需要将顶级控件(网格,画布等)的DataContext设置为拥有tabs集合的类型(如果您没有重命名窗口的类,则该类型将是Window1。< / p>

因此,例如,将其与上面的XAML片段相结合:

    <Grid DataContext="Window1">
....
....
        <YourControl ItemSource="{Binding tabs} />
....
....
    </Grid>