Как прекратить запуск события, если свойство изменено из ViewModel - PullRequest
0 голосов
/ 04 июня 2019

У меня есть флажок. который будет по умолчанию true. на этом флажке у меня есть событие Не проверено и проверено. если я изменю значение с ViewModel, мне нужно прекратить запускать это событие, я просто ищу лучший способ сделать это

UI

 <dxe:ToggleSwitch IsChecked="{Binding FollowFIFO}" HorizontalAlignment="Center"
                   IsThreeState="False" FontSize="24" FontWeight="Bold" >
                   <dxmvvm:Interaction.Behaviors>
                       <dxmvvm:EventToCommand EventName="Unchecked" command="{Binding PickingMethodologyChanged}"/>
                       <dxmvvm:EventToCommand EventName="Checked" Command="{Binding PickingMethodologyChanged}"/>
                   </dxmvvm:Interaction.Behaviors>

 </dxe:ToggleSwitch>

Опора в ВМ

 private bool followFIFO = true;
 public bool FollowFIFO
 {
    get { return followFIFO; }
    set 
      { 
           followFIFO = value; 
           OnPropertyChanged(new PropertyChangedEventArgs("FollowFIFO")); 
      }
 }

CTOR

 PickingMethodologyChanged = new DelegateCommand(ChangePickingMethodology);

Метод

private void ChangePickingMethodology()
{
    RequestClose(null, null);   
}

Что мне нужно сделать

каждый раз, когда изменяется метод PickingMethodology, мне нужно закрыть текущий интерфейс и открыть тот же интерфейс с этим значением FollowFIFO

Повторный вызов того же интерфейса

bool FollowFIFO = true;
PickingMaterialsViewModel pickingMaterialsViewModel = new PickingMaterialsViewModel();

do
{
   PickingMaterialsView pickingMaterialsView = new PickingMaterialsView();
   FollowFIFO = pickingMaterialsViewModel.FollowFIFO;
   pickingMaterialsViewModel = new PickingMaterialsViewModel();
   pickingMaterialsViewModel.FollowFIFO = FollowFIFO;
   EventHandler handle = delegate { pickingMaterialsView.Close(); };
   pickingMaterialsViewModel.RequestClose += handle;
   pickingMaterialsViewModel.InIt(ot, WarehouseCommon.Instance.Selectedwarehouse);
   pickingMaterialsView.DataContext = pickingMaterialsViewModel;
   pickingMaterialsView.ShowDialog();

} 
while (pickingMaterialsViewModel.IsCanceled == false);

поэтому, когда я изменяю pickingMaterialsViewModel.FollowFIFO, одно и то же событие запускается снова и снова

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...