2016-04-13 4 views
0

Я пытаюсь создать небольшую навигационную систему в своем приложении WPF. Я использую учебник this для перехода между страницами. Я хочу добавить функциональность «Вернуться назад» поверх нее на один UserControl.WPF навигация и уничтожение corrent usercontrol

У меня есть UserControl Orders и еще один UserControl Order. Orders показан в MainWindow, и когда я нажимаю кнопку, OrderUserControl следует указывать в том же месте в MainWindow. Я попытался поместить ссылку на usercontrol Orders в usercontrol Order и перейти к Orders через Order. Но Order не уничтожен, так как я использую переменную из этого класса.

Как я могу убедиться, что, когда я перейти к Order форме OrdersOrders, тем не разрушается, и когда я перейти к Orders от Order, Order разрушается.

Кнопка Обработчик события щелчка в Orders Класс:

private void ShowOrder(object sender, RoutedEventArgs e) 
{ 
    Order order = new Order(); 
    Switcher.Switch(order); 
} 

Вернуться назад нажатие кнопки Обработчик в Приказе Класс

public UserControl parent; 

private void ReturnBack(object sender, RoutedEventArgs e) 
{ 
    Switcher.Switch(parent); 
} 

ответ

0

Я обычно делаю следующий рисунок whice использует ControlTemplate, позволяет сказать, у вас есть в вашем классе:

private Enums.View _currView; 
public Enums.View CurrView 
{ 
    get 
    { 
     return _currView; 
    } 
    set 
    { 
     _currView = value; 
     OnPropertyChanged("CurrView"); 
    } 
} 

Когда Enums.View является:

public enum View 
{ 
    ViewA = 1, 
    ViewB = 2, 
    ViewC = 3, 
} 

Затем, используя Binding для CurrView выше мы изменяем вид, когда она меняется:

<UserControl ... 
     xmlns:Views="clr-namespace:CustomersManager.View" 
     d:DesignHeight="300" d:DesignWidth="300"> 

    <UserControl.Resources> 
     <!--*********** Control templates ***********--> 
     <ControlTemplate x:Key="DefultTemplate"> 
      <Views:DefultCustomersView/> 
     </ControlTemplate> 
     <ControlTemplate x:Key="A"> 
      <Views:ViewAllCustomersView /> 
     </ControlTemplate> 
     <ControlTemplate x:Key="B"> 
      <Views:AddNewCustomersView /> 
     </ControlTemplate> 
     <ControlTemplate x:Key="C"> 
      <Views:EditCustomersView /> 
     </ControlTemplate> 
    </UserControl.Resources> 

    <Border BorderBrush="Gray" BorderThickness="2"> 
     <Grid> 
      <ContentControl DataContext="{Binding}" > 
       <ContentControl.Style> 
        <Style TargetType="ContentControl"> 
         <Setter Property="Template" Value="{StaticResource DefultTemplate}" /> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding Path=CurrView}" Value="ViewA"> 
           <Setter Property="Template" Value="{StaticResource A}" /> 
          </DataTrigger> 
          <DataTrigger Binding="{Binding Path=CurrView}" Value="ViewB"> 
           <Setter Property="Template" Value="{StaticResource B}" /> 
          </DataTrigger> 
          <DataTrigger Binding="{Binding Path=CurrView}" Value="ViewC"> 
           <Setter Property="Template" Value="{StaticResource C}" /> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </ContentControl.Style> 
      </ContentControl > 
     </Grid> 
    </Border> 
</UserControl> 
Смежные вопросы