将组合框绑定到不同的DataContext

时间:2009-08-12 16:47:40

标签: binding combobox datacontext

组合框项目取自一个表格,一个表格在其上进行装订。在我在数据库中保存另一个表中的选定项目后,我希望所选项目是保存的项目。但是所选项目丢失了。所以,我的问题是:我可以将组合框绑定到两个DataContexts或者另一个解决方案吗?

举一个更清楚的例子:组合框项是从数据源中获取的预定义值,所选值必须保存并显示在界面上。因此,从我所看到的必须是对预定义值的绑定以及与保存的值的绑定以建立与所选项的连接。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

Ioana,我似乎没有得到你的目标...... 如果你拿这个xaml:

<Window x:Class="WpfApplication4.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1"
        Height="300"
        Width="300">
    <StackPanel>
        <TextBox Text="{Binding Path=SelectedText, Mode=TwoWay}" 
                 Width="200"/>
        <ComboBox Width="200"
                  VerticalAlignment="Center"
                  HorizontalAlignment="Center"
                  SelectedItem="{Binding Path=SelectedText, Mode=TwoWay}"
                  ItemsSource="{Binding Path=Texts, Mode=OneWay}">
        </ComboBox>
    </StackPanel>
</Window>

和这个代码隐藏:

    public partial class Window1 : INotifyPropertyChanged
    {
        public Window1()
        {
            InitializeComponent();
            this.Texts = new List<string>(new[] {"foo","bar"});
            this.DataContext = this;
        }

    private ObservableCollection<string> texts;
    public ObservableCollection<string> Texts 
    { 
        get
        {
            return texts;
        }

        set
        {
            texts = value;
            if (this.PropertyChanged != null) this.PropertyChanged(this, new PropertyChangedEventArgs("Texts"));
        }
    }

    private string selectedText;
    public string SelectedText
    {
        get
        {
            return selectedText;
        }

        set
        {
            selectedText = value;
            if (this.PropertyChanged != null) this.PropertyChanged(this, new PropertyChangedEventArgs("SelectedText"));
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
}

您确实拥有Items和selectedValue数据绑定 注意 INotifyPropertyChanged 这是你想要实现的目标吗?