2009-08-12 7 views
0

콤보 박스 항목은 바인딩이 이루어진 하나의 테이블에서 가져옵니다. 선택한 항목을 다른 테이블에 데이터베이스에 저장 한 후 선택한 항목을 저장 한 항목으로 지정합니다. 그러나 선택한 항목이 손실됩니다. 그래서, 내 질문은 : 두 DataContexts 또는 어쩌면 다른 솔루션에 콤보 상자를 바인딩 할 수 있습니까?콤보 박스를 다른 DataContext에 바인딩

더 명확한 예를 들면 : 콤보 박스 항목은 데이터 소스에서 가져온 미리 정의 된 값이며 선택한 값은 저장되어 인터페이스에 표시되어야합니다. 따라서, 내가 볼 수있는 것은 미리 정의 된 값에 대한 바인딩이고 선택된 항목에 연결하기 위해 저장된 값에 대한 바인딩이어야합니다.

의견이 있으십니까?

+0

어떤 기술 - 저는 Winforms 또는 ASP.Net을 사용하지만 ...? –

+0

WPF 응용 프로그램 –

답변

1

요아나, 난 당신이 목표로하는 것을 얻을하지 않는 것 ..
이 XAML 걸릴 경우 : 당신이 있습니까

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; 
} 

:

<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> 

이 코드 숨김 Items 및 selectedValue 데이터가 바인딩됩니다.
INotifyPropertyChanged에 유의하십시오.
달성하려는 목표입니까?

+0

질문하지 않았지만 항목을 업데이트 할 수 있도록하려면 Texts가 수정 된 경우 PropertyChangedEvent도 보내야합니다. – wimh

+0

예, 코드를 수정했습니다 ... – Nils

관련 문제