2012-11-05 3 views
0

두 개의 콤보 박스가 있습니다. 첫 번째 콤보 상자는 관리자를 선택하기위한 것이고 두 번째 콤보 상자는 Asst를 선택하는 것입니다. 매니저. 그러나 소스 이름은 두 comboxes에서 동일합니다. 따라서 예를 들어 첫 번째 콤보 상자에서 "James"를 선택하면 두 번째 콤보 상자에서 선택하지 않습니다. 두 번째 콤보 상자에서 "James"를 클릭하면 오류가 발생하며 "JAmes"를 선택하면 안됩니다.WPF Combobox DataBind

if (Manager.SelectedItem == Asst_MAnager.SelectedItem) 
{ 
    MessageBox.Show("You must change Asst_Manager"); 
} 

나는 그것이 나에게 오류 메시지를 제공 한 후 동일한 항목을 선택하면, 권리 :

나는 두 번째 콤보 상자의 selection_changed 이벤트에 해당 코드를 썼다. 그러나 여전히 오류 메시지 이후에 동일한 항목을 선택합니다. 내 WPF 코드는 아래와 같습니다. 어떤 생각을 주시겠습니까?

<local:ComboBoxCW Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" x:Name="Manager" Text="" Background="#FFC8D2E8" Margin="0,0,0,3" 
      SelectedID="{Binding Path=[Manager}" /> 
<local:ComboBoxCW Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" x:Name="Asst_Manager" Text="" Background="#FFC8D2E8" CWListName="Assistant Manager" Margin="0,0,0,3" 
      SelectedID="{Binding Path=[Asst_Manager]}" SelectionChanged="Asst_Manager_SelectionChanged" /> 

답변

2

당신의 콤보가 바인딩 때문에, 당신이 (당신이 일반적으로, 제작 한 모든 선택을 취소한다) -1 selectedIndex의를 설정할 수 있으며, 다음과 같이 보일 것이다 : 그래서

if (Manager.SelectedItem == Asst_MAnager.SelectedItem) 
{ 
    MessageBox.Show("You must change Asst_Manager"); 
    Asst_Manager.SelectedIndex = -1; 
} 

, I 각 상자의 첫 번째 항목에서 "이름 선택"을 제안합니다. 그렇게하면 다음을 할 수 있습니다.

if (Manager.SelectedItem == Asst_MAnager.SelectedItem) 
{ 
    MessageBox.Show("You must change Asst_Manager"); 
    Asst_Manager.SelectedIndex = 0; 
} 

또는 이와 비슷한 것입니다. 그것은 꽤 아니며, 가장 좋은 방법은 아닙니다. 하지만 간단하고 작업이 완료됩니다.

+0

정말 간단한 해결책 :) ^^ 나는 그것을 좋아한다 – Isi

+0

@Isi : Edited. 그게 무슨 뜻이야? – MyCodeSucks

+0

솔루션 용 Thnx – Isi

0

유효성 검사 규칙을 사용해 보셨습니까? ValidationRule에서 상속받은 클래스를 사용하고 값을 선택하기 전에 값을 확인하십시오.

Here이 항목에 대한 설명이 있습니다. 희망이 도움이됩니다.

+0

처럼 변경 이벤트를 사용할 수 있습니다. 나는 이것을 적용 할 것이다. thnx – Isi

0

나는 asst_mgr 목록에 mgr 이름조차 갖지 않기 위해서 LINQ를 사용하여 Asst_Manager 목록을 필터링하기 만하면된다. 그리고 항목이 첫 번째 항목에서 선택 될 때까지 두 번째 목록을 활성화하지 않습니다.

0

당신은 선택이 좋은

private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     string s = string.Empty; 
     string s1 =string.Empty; 
     if (comboBox2.SelectedItem != null) 
     { 
      s1 = comboBox2.SelectedItem.ToString(); 
     } 
     if (comboBox1.SelectedItem != null) 
     { 
      s = comboBox1.SelectedItem.ToString(); 
     } 
     if (s == s1) 
     { 
      MessageBox.Show("You have Selected These Item As Second Combobox"); 
      comboBox1.SelectedItem = null; 
     } 
    } 

    private void comboBox2_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     string s=string.Empty; 
     string s1 = string.Empty; 
     if (comboBox1.SelectedItem != null) 
     { 
      s = comboBox1.SelectedItem.ToString(); 
     } 
     if (comboBox2.SelectedItem != null) 
     { 
      s1 = comboBox2.SelectedItem.ToString(); 
     } 
     if (s == s1) 
     { 
      MessageBox.Show("You have Selected These Item As First Combobox"); 
      comboBox2.SelectedItem = null; 
     } 
    }