2012-06-04 1 views
0

저는 WPF를 처음 사용합니다.이 데이터베이스 내용을 WPF 컨트롤에 바인딩하는 가장 간단한 방법은 무엇입니까?

범주, 유형, 2 개의 열이있는 데이터베이스 테이블이 있습니다. 기본 키 조합은 (Category, Type)입니다. 유형은 카테고리에 종속적입니다. 즉, 여러 개의 유형이 포함 된 1 개의 카테고리를 의미합니다.

이제 내 WPF UI에는 2 개의 comboBox 컨트롤이 있습니다. 첫 번째는 DB 테이블의 고유 한 범주 목록에 바인딩합니다. 나는 컨트롤을 구별 (범주)의 DB보기에 바인딩하여이 작업을 수행했습니다. 두 번째 컨트롤은 현재 첫 번째 컨트롤에서 선택된 카테고리에 속하는 Type 목록을 표시해야합니다.

나는 연구를했지만 어떻게 쉽게 할 수 있는지 모른다. 제공된 범주를 기반으로 원하는 형식 값 목록을 선택하려면 저장 프로 시저를 만들려고했지만 선택한 범주를 XAML의 저장 프로 시저로 전달하는 방법을 모릅니다. XAML 대신 코드를 사용해야합니까? 당신의 제안은 무엇입니까?

감사 제어 WPF 바인딩합니다

답변

2

해당 범주에 대해 가능한 각 유형을 포함하는 범주를 보유 할 개체를 만듭니다. 당신은 모든 종류를 초기화 할 때 뭔가 같은 ...

public class Category 
{ 
    public ObservableCollection<string> Types { get; set; } 
} 

그런 다음, 당신은

public class MyClass 
{ 
    public ObservableCollection<Category> Categories { get; set; } 
    public MyClass() 
    { 
     InitializeComponent(); 
     ObservableCollection MyTypes = new ObservableCollection(); 
     MyTypes.Add("type1"); 
     MyTypes.Add("type2"); 
     MyTypes.Add("Type3"); 
     Categories.Add(new Category() { Types = MyTypes }); 
     //Probably a more elegant way to do this, but hard to say based on information given 

     this.DataContext = this; 
    } 
} 

마지막으로 당신이 카테고리 목록에 첫 번째 콤보 상자를 바인딩 할 수 있습니다에 ... 허용되는 유형 설정하고 있습니다 두 번째는 다른 콤보 박스의 선택된 항목의 유형 목록입니다.

<ComboBox Name="cboCategory" ItemsSource = "{Binding Categories}" /> 

<ComboBox ItemsSource = "{Binding ElementName=cboCategory, Path=SelectedItem.Types}" /> 
+0

감사합니다. 달성하고자하는 것은 데이터 바인딩을 조금 과장하는 것입니다. 나는 당신의 방법을 사용할 것입니다. – Sheen

0

것은 우리가 그런 종류의 데이터를 표시 할 때마다 보통 우리가 먼저 데이터를 가져오고 우리가 필요한 객체를 준비 할 것입니다 많은과 후.

먼저 combobox에 바인딩 했으므로 selecteditem을 기준으로 다른 드롭 다운 목록을 채우고 첫 번째 또는 Category List의 SelectionChanged에 바인딩해야합니다. 속성 변경 이벤트도 사용할 수 있습니다.

참고 : 데이터가 크면 데이터를 가져 오기 위해 CTE 또는 페이징 종류의 것을 사용합니다.

관련 문제