저는 WPF 및 MVVM을 처음 사용하므로 저와 함께 곰.WPF를 사용하여 명령 유효성 확인
기본적으로 사용자가 조직 세부 정보를 데이터베이스에 입력 할 수있게 해주는 응용 프로그램을 만들고 있습니다. 내가 만드는거야 내 WPF 응용 프로그램 내에서
, 나는 properties
, commands
및 entity framework
방법을 포함하는 View Model
이 (내가이 MVVM을 사용하는 올바른 방법이 아니다 알아,하지만 나는 그것을 달성하는 방법을 천천히 배우고) .
내보기에 그것은 탭 컨트롤로서 사용자가 다른 조직 세부 정보를 데이터베이스에 입력 한 다음 다른보기에서 사용자가 사용할 수 있도록 입력 한 내용을 보여주는 데이터 표가 있습니다. 필요한 경우 내용을 업데이트하십시오.
내 질문에 이르게합니다. 지금까지는 특정 필드가 비어있을 때 버튼이 활성화되지 않지만 일단 입력되면 활성화 될 수 있도록 명령을 확인했습니다. 그렇게.
private ICommand showAddCommand;
public ICommand ShowAddCommand
{
get
{
if (this.showAddCommand == null)
{
this.showAddCommand = new RelayCommand(this.SaveFormExecute, this.SaveFormCanExecute);//i => this.InsertOrganisation()
}
return this.showAddCommand;
}
}
private bool SaveFormCanExecute()
{
return !string.IsNullOrEmpty(OrganisationName) && !string.IsNullOrEmpty(Address) && !string.IsNullOrEmpty(Country) && !string.IsNullOrEmpty(Postcode)
&& !string.IsNullOrEmpty(PhoneNumber) && !string.IsNullOrEmpty(MobileNumber) && !string.IsNullOrEmpty(PracticeStructure) && !string.IsNullOrEmpty(PracticeType) && !string.IsNullOrEmpty(RegistrationNumber);
}
private void SaveFormExecute()
{
InsertOrganisations();
}
Xaml:
<Button Content="Save" Grid.Column="1" Grid.Row="18" x:Name="btnSave" VerticalAlignment="Bottom" Width="75" Command="{Binding ShowAddCommand}"/>
는하지만 내가 달성하기 바라고 한번 사용자가 다음 명령이 모두 활성화되지 않고, 데이터베이스에 한 조직의 진입 점입니다 및 실수로 다른 조직에 들어가는에서 사용자를 방지 할 수 있습니다. 목적은 하나의 조직이 더 많거나 적게 추가되도록 허용하는 것입니다.
이것이 가능합니까?
내가 찾고있는 내용인지 확실하지 않으므로 의견을 달아주세요. 당신이 필요로하는 것은 폼 유효성 검사에 의한 것이라고 생각합니다. 이 [기사] (http://www.scottlogic.co.uk/blog/colin/2009/01/bindinggroups-for-total-view-validation/)를보십시오. 답장을 보내 주셔서 감사합니다. – dowhilefor
글쎄, 내 필드는 속성 검증을 사용하여 검증되었으므로 문제는 아닙니다. 난 단지 내 명령을 검증 할 수있는 방법을 원한다 그래서 그것은 데이터의 한 행 (데이터베이스 내에서), 가능한 플래그를 사용하여 입력 할 수 있습니까? 그러나 나는 이것을 달성하는 방법을 모른다. –
IsEnabled 속성을 호출하는 속성에 바인딩하지 않는 이유 bool HasOrganisation {return mOrganisation.Count> 0;} 그리고 조직 속성이 변경되면이 값을 올립니다. 코드에 대한 정보가 없어도 좋은 답변을 제공합니다. 기껏해야 우리가하고 싶은 일에 대한 아주 작은 실행 가능한 예를 제공하십시오. – dowhilefor