2016-03-30 20 views
0

Etkileşimli menü oluşturmam gerekiyor. Seçenek seçildiğinde, uygun içeriği göstermek istiyorum.
Örneğin, "Schemat bazy Northwind" seçeneği tıklandığında, kılavuzuma eklenmelidir. Başka bir seçenek seçildiğinde, önceki içerik kaldırıldı ve vb.
WPF menüsü - Dinamik göster ve içeriği gizle

Aklıma gelen tek şey, başlangıçta net ızgara ve daha sonra içerik ekleyen işlevler oluşturmaktır (Bu mümkün mü?).

Lütfen bu sorunu çözmek için beni yönlendirebilecek herhangi biri var.

<Window x:Class="Northwind.AdminPanel" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Panel administratora" WindowState="Maximized"> 

    <StackPanel Name="bindingData"> 
     <StatusBar> 
      <TextBlock FontSize="15" Text="{Binding ServerName}" Margin="0 0 30 0"></TextBlock> 
      <TextBlock FontSize="15" Text="{Binding ConnectionStatus}" Margin="0 0 30 0"></TextBlock> 
      <Label FontSize="15" Name="lblClock"></Label> 
     </StatusBar> 

     <DockPanel Height="55"> 
      <Menu DockPanel.Dock="Top"> 
       <MenuItem Header="Baza" Margin="10" FontSize="15"></MenuItem> 
       <MenuItem Header="Pomoc" Margin="10" FontSize="15"> 
        <MenuItem x:Name="itemSchema" Header="Schemat bazy Northwind" Click="itmSchema_Click_1"></MenuItem> 
       </MenuItem> 
      </Menu> 
     </DockPanel> 

     <Grid x:Name="mainContent"> 

      <!--add content -->        

     </Grid> 
</StackPanel> 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Shapes; 
using System.Windows.Threading; 
namespace Northwind 
{ 
    public partial class AdminPanel : Window 
    { 
     public string ServerName { get; set; } 
     public string ConnectionStatus { get; set; } 

     public AdminPanel(string name,string status) 
     { 
      InitializeComponent(); 

      this.ServerName = name; 
      this.ConnectionStatus = status; 

      DispatcherTimer dtClockTime = new DispatcherTimer(); 
      dtClockTime.Interval = new TimeSpan(0, 0, 1); 
      dtClockTime.Tick += dtClockTime_Tick; 

      dtClockTime.Start(); 
      bindingData.DataContext = this; 
     } 

     private void dtClockTime_Tick(object sender, EventArgs e) 
     { 
      lblClock.Content = DateTime.Now.ToLongTimeString(); 
     } 

     private void itmSchema_Click_1(object sender, RoutedEventArgs e) 
     { 
      //code 
     } 
    }  
}  

cevap

0

Sen bir conatainer (Kılavuz) istediği hangisi öğe menü veya koyabilirsiniz ve çökmüş olarak bu denetimi gizlemek istediğinizde Görünürlük özelliğini kullanabilirsiniz. MVVM desenini kullanmıyorsanız, ilgili olaya ekleyin.

Container_Name.Visibility = Visibility.Collapsed; 

Veya Xaml Tetikleyicilerini de aynı şekilde kullanabilirsiniz. O bakınız StackOverflow_Answer

+0

Cevabınız için teşekkür ederiz. Çözümün çok kolay ve istediğim işler. XAML kodum için yeni kapsayıcılar oluşturdum ve Onları Daraltılmış değere sahip özellik Görünürlüğü olarak ayarladım. Belki sorum benim için aptal olacak ama HTML'de Örnek için elementlere sınıf ve kimlik koyabiliyoruz. XAML'de sadece bir kez Name özelliğini kullanabiliriz ve arkasındaki kodda daraltılmış değeri ayarlamak için tüm kapları Ad yazmam gerekir. Sorun değil ama belki biraz geliştirilebilir. –

+0

Iam, MVVM Kalıbında her şeyi yapmanızı önerir. Bu daha kolay. –

+0

MVVM Paternini kullanmayı denedim. Wpf'de kaynak sözlük hakkında bazı bilgiler okudum, ancak maalesef ilgili bir anahtar özelliğiyle ilgili sorun yaşadım. MVVM kullanımının daha profesyonel olduğunu biliyorum, ancak şimdi mülk kullanıyorum Görünür benim için daha kolay. Kesinlikle gelecekte dikkatimi çözümünüze çekeceğim. Cevabın için teşekkür ederim. –

0

için bir kaynak Sözlük oluşturma ve ekleme Bu kodu

<StackPanel xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <!-- Set names two different ways --> 
    <Button Name="okButton">OK</Button> 
    <Button x:Name="cancelButton">Cancel</Button> 
    <ListBox> 
     <!-- Set content three different ways --> 
     <ListBoxItem Content="Item 1" /> 
     <ListBoxItem>Item 2</ListBoxItem> 
     <ListBoxItem> 
      <ListBoxItem.Content>Item 3</ListBoxItem.Content> 
     </ListBoxItem> 
    </ListBox> </StackPanel> 

seçenek "Schemat bazy Northwind" tıklandığı

private void SchematbazyNorthwind_Click(object sender, RoutedEventArgs e) 
     { 
      StackPanel stackPanel = null; 
      using (FileStream fs = 
      new FileStream("Dictionary1.xaml", FileMode.Open, FileAccess.Read)) 
      { 
       stackPanel = (StackPanel)XamlReader.Load(fs); 
      } 
      MainGrid.Children.Add(stackPanel); 
     } 

kendi kaynaklarını yükleyin ve size takmak ızgara

İlgili konular