2016-04-13 98 views
0

WPF uygulamasında küçük bir navigasyon sistemi kurmaya çalışıyorum. Sayfalar arasında gezinmek için this öğreticisini kullanıyorum. Bir 'UserControl için' Geri Dön 'işlevini eklemek istiyorum.WPF dolaşım ve kullanıcı denetimini imha et

Bir UserControl Orders ve başka bir UserControl Order sahibim. MainWindow'da ve OrderUserControl numaralı düğmeyi tıkladığınızda, MainWindow'da aynı yerde gösterilmelidir. OrdersOrder kullanıcı denetiminde Orders kullanıcı denetimine bir başvuru yapmaya çalıştım ve Order aracılığıyla Orders'a gidin. Ama o sınıftan bir değişken kullandığım için Order yok edilmez.

nasıl Order forma Orders, gittiğinizde Orders tahrip olmadığından emin olun ve ben Order den Orders gittiğinizde, Order yok edilir. Siparişleri Sınıfında

Düğme tıklama olay işleyicisi:

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

Dönüş geri düğmesi tıklama işleyicisi Emri Sınıf

public UserControl parent; 

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

cevap

0

Genellikle ControlTemplate kullanan whice sonraki desen yapmak, diyelim Sınıfınızda var:

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

Enums.View olduğunda:

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

Daha sonra, bu değişiklikleri biz görünümünü değiştirmek üzerinde CurrView Bağlanma kullanılarak:

<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>