2013-10-03 2 views
0
<Border Grid.Row="1" Background="Gray" Padding="7"> 
    <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,0,30,0"> 
    <optimumScheduler:LookUpOKButton Grid.Row="1" Content="OK" HorizontalAlignment="Center" Padding="20,0,20,0" Margin="0,0,20,0"/> 
    <optimumScheduler:LookUpCancelButton Grid.Row="1" Content="Cancel" HorizontalAlignment="Center" Padding="20,0,20,0"/> 

항목을 조건 지정해야합니다. 확인 버튼을 조절해야합니다. 사용자가 다음 중 하나를 입력하지 않은 경우 : 환자, 의사/치료사, DEpartment 그러면 확인 버튼을 비활성화하거나 입력을 허용하지 않을 것입니다.코드 작성 방법이 필드에 필수 항목이 입력하십시오.

여기에 정의되어 있습니다. 그들 중 하나. 주제에 항목이 있어야한다고 코드하는 방법

public static string FormatAppointmentFormCaption(bool allDay, string subject, bool readOnly) 
{ 
    string format = allDay ? "Event - {0}" : "Appt Editor - {0}"; 
    string text = subject; 
    if (string.IsNullOrEmpty(text)) 
     text = "Untitled"; 
    text = String.Format(CultureInfo.InvariantCulture, format, text); 
    if (readOnly) 
     text += " [Read only]"; 
    return text; 
} 
+2

은 그냥'Button' 바인딩을 'CanExecute' 메쏘드로 활성화 시킬지 여부를 제어 할 수 있습니다. –

+0

나는 본다. 그 첫 걸음을 내게 가르쳐 주시겠습니까? –

+0

나는 밥 생각합니다. 벌써 했어. – JDB

답변

1

입력하신 내용의 Validation.HasError 속성에서 IDataErrorInfo 인터페이스를 사용하고 버튼의 IsEnabled 속성을 트리거하는 것이 좋습니다.

예를 들어, 뷰 모델처럼 보일 수 있습니다 :

public class UserEntry: IDataErrorInfo 
{ 
    public string UserType{get;set;} 

    string IDataErrorInfo.this[string propertyName] 
    { 
     get 
     { 
      if(propertyName=="UserType") 
      { 
       // This is greatly simplified -- your validation may be different 
       if(UserType != "Patient" || UserType != "Doctor" || UserType != "Department") 
       { 
        return "Entry must be either Patient, Doctor, or Department."; 
       } 
      } 
      return null; 
     } 
    } 

    string IDataErrorInfo.Error 
    { 
     get 
     { 
      return null; // You can implement this if you like 
     } 
    } 
} 

그리고 당신의 전망이 비슷합니다 일부 XAML이있을 수`ICommand`에

<TextBox Name="_userType" 
     Text="{Binding UserType, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=true}" /> 

<Button Command="{Binding OKCommand}" 
     Name="OK"> 
    <Button.Style> 
    <Style TargetType="Button"> 
     <Style.Triggers> 
     <DataTrigger Binding="{Binding ElementName=_userType, Path=(Validation.HasError), Mode=OneWay}" 
         Value="False"> 
      <Setter Property="IsEnabled" 
        Value="True" /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding ElementName=_userType, Path=(Validation.HasError), Mode=OneWay}" 
         Value="True"> 
      <Setter Property="IsEnabled" 
        Value="False" /> 
     </DataTrigger> 
     </Style.Triggers> 
    </Style> 
    </Button.Style> 
</Button> 
0

이 링크를 확인하십시오. 그 당시 나에게 매우 도움이되었다! 어떤 기회에 의해 당신이 ICommand을 사용하여 수행 할 수없는 경우

ICommand Implementation

, if 문을 사용하고 요소를 IsEnabled 속성을 false로 설정합니다 Patient, Doctor, TherapistDEpartment가있다

if(String.IsNullOrEmpty(Patient) || String.IsNullOrEmpty(Doctor) || String.IsNullOrEmpty(Therapist) || String.IsNullOrEmpty(DEpartment)) 
{ 
    yourElement.IsEnabled = false 
} 

가정 것을을 문자열 속성 (예 : TextBox.Text, Label.Content 등).

관련 문제