2011-01-23 8 views
0

wpf-mvvm 응용 프로그램에서 편집 가능한 콤보 상자가 있습니다.편집 가능한 콤보 상자에서 텍스트 상자에 테두리를 추가하는 방법은 무엇입니까?

편집 가능한 콤보 박스에서 텍스트 상자에 테두리를 추가하고 싶습니다. 이 테두리는 빨간색으로 표시됩니다. 사용자가 콤보 상자에 잘못된 입력을 입력하면

도와주세요.

<ComboBox ItemsSource="{Binding Path = ContractNumberList }" Width="90" IsEditable="True" SelectedItem="{Binding Path = ContractNumber,Mode=TwoWay}" 
Text="{Binding Path = ContractNumber, UpdateSourceTrigger=LostFocus}"> 
</ComboBox> 

편집는 : 내가 필요한 것은 내 편집 가능한 콤보 상자의 항목 템플릿을 무시하는 것입니다. 편집 가능한 콤보 상자에는 두 개의 항목이 있습니다. => 텍스트 상자와 목록. 이 텍스트 상자에 테두리를 추가해야합니다.

답변

1

당신은 할 수있다 사용해야합니다 이것에 대해 ValidationRules를 사용하십시오. 그러나 유효성을 검사하기 위해 ContractNumberList를 전달해야하므로 매우 까다로울 것입니다. 더 쉬운 방법은 ViewModel을 IDataErrorInfo으로 구현하고 Text 바인딩에 대해 ValidatesOnDataErrors="True"을 설정 한 다음 ViewModel에서 유효성 검사를 수행하는 것입니다. 그것은 유사한 볼 수있는이

<ComboBox ItemsSource="{Binding Path=ContractNumberList}" 
      Width="90" 
      IsEditable="True" 
      SelectedItem="{Binding Path=ContractNumber, 
           Mode=TwoWay}" 
      Text="{Binding Path=ContractNumber, 
         UpdateSourceTrigger=LostFocus, 
         ValidatesOnDataErrors=True}"/> 

보기 모델

public class YourViewModel : IDataErrorInfo 
{ 
    // ... 
    public string ContractNumber 
    { 
     get; 
     set; 
    } 
    // etc. 

    #region IDataErrorInfo Members 

    public string Error 
    { 
     get { throw new NotImplementedException(); } 
    } 

    public string this[string columnName] 
    { 
     get 
     { 
      string returnValue = string.Empty; 
      if (columnName == "ContractNumber") 
      { 
       if (ContractNumberList.IndexOf(ContractNumber) < 0) 
       { 
        returnValue = "Invalid selection"; 
       } 
      } 
      return returnValue; 
     } 
    } 

    #endregion 
} 
+0

@Anish Mohan :이 솔루션은 목록에없는 값을 입력 할 때 TextBox 주위에 빨간색 테두리를 배치합니다. 여전히 템플릿 솔루션을 원하십니까? –

관련 문제