2009-08-12 16 views
0

コンボボックスの項目は、バインディングが行われる1つのテーブルから取得されます。選択したアイテムを別のテーブルにデータベースに保存した後、選択したアイテムを保存したものにします。しかし、選択した項目は失われます。だから、私の質問です:私は2つのDataContextsまたは別のソリューションにコンボボックスをバインドできますか?コンボボックスを別のDataContextにバインドする

例をより明確にすると、コンボボックス項目はデータソースから取得される事前定義値であり、選択された値は保存してインターフェイスに表示する必要があります。だから、私が見ることができるのは、あらかじめ定義された値へのバインディングと、選択したアイテムへの接続を保存するための値へのバインディングでなければなりません。

提案がありますか?あなたは、このXAMLを取る場合

+0

どのような技術 - 私はWinformsまたはASP.Netを想定していますが...? –

+0

WPF application –

答えて

1

イオアナ、私は
..あなたが目指しているものを得るように見えることはありません:

<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に注目してください。
これは達成しようとしていることですか?

+0

尋ねられませんでしたが、項目を更新できるようにしたい場合は、Textsが変更された場合はPropertyChangedEventも送信するようにする必要があります。 – wimh

+0

はい、コードを修正しました... – Nils

関連する問題