문제

NotesViewModel의 하위 뷰 모델이있는 VehicleViewModel이 있습니다.

public IManageVehicleNotesViewModel NotesViewModel { get; set; }

VehicleViewModel의 첫 번째 활성화에서 I는 서브 뷰 모델을 활성화합니다.

NotesViewModel.Activate();

활성화는 여러 명령을 시작하는 방법을 호출합니다.

CreateCommand = new DelegateCommand<object>(OnCreateCommand, CanCreate);

그러나 텍스트 상자가 하위보기에 바인딩되지만 (따라서 데이터 콘텍스트가 제자리에 있습니다) 명령이 바인딩되지 않습니다. 명령에서 RaiseCaneXecutechanged를 호출하려고했지만 예상대로 메소드를 비활성화하거나 활성화하거나 호출하지 않습니다.

텍스트 상자가 바인딩되는 것처럼 관련이 있는지 모르겠지만 Resourcedictionary를 사용하여보기와 뷰 모델을 연관시키고 있습니다 ...

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:v="clr-namespace:GTS.GRS.N3.Modules.Vehicles.Views"
    xmlns:vm="clr-namespace:GTS.GRS.N3.Modules.Vehicles.Model">
  <DataTemplate DataType="{x:Type vm:ManageVehicleViewModel}">
    <v:ManageVehicleView />
  </DataTemplate>
  <DataTemplate DataType="{x:Type vm:ManageVehicleNotesViewModel}">
    <v:ManageVehicleNotesView />
  </DataTemplate>
</ResourceDictionary>

최상위 차량의 명령이 작동합니다.

이런 경험이있는 사람이 있습니까? 내가하고있는 순서인가요? 감사하게받은 도움이 필요합니다!

건배,

앤디

도움이 되었습니까?

해결책

그렇습니다 CreateCommand 속성 트리거 PropertyChanged 이벤트 ? 그렇지 않은 경우, UI를 할당하면 UI에 알림을받지 않습니다 ...

같은 도구를 사용하십시오 탐정 있는지 확인합니다 Command 버튼의 속성이 설정됩니다

다른 팁

이 작업을 수행하고 출력을 확인하여 무슨 일이 일어나고 있는지 확인하십시오.

<UserControl …
     xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase" />

<Button Command="{Binding MyCommand, 
                  diagnostics:PresentationTraceSources.TraceLevel=High}" … />

실제로 바인딩을하려는 객체 등을보고해야합니다. 바인딩에서 무슨 일이 일어나고 있는지 확인하기 위해 실행 중에 출력 창을 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top