2012-04-03 3 views
0

ich ein Menü haben, die etwa wie folgt aussieht:WPF Display-Meldung anstelle von Menüpunkten im Menü Menüliste gebunden ist leer

<MenuItem x:Name="menu" ItemsSource="{Binding Items}" Style="{StaticResource ItemStyle}"> 
    <MenuItem.Header> 
     ... 
    </MenuItem.Header> 
    <MenuItem.ItemContainerStyle> 
     <Style TargetType="{x:Type MenuItem}"> 
      <Setter Property="PropertyNameOne" Value="{Binding}"/> 
      <Setter Property="PropertyNameTwo" Value="{Binding}"/> 
     </Style> 
    </MenuItem.ItemContainerStyle> 
</MenuItem> 

Items ist ein NotifyingCollection. Wenn jedoch die Items Liste leer ist, möchte ich eine Meldung anzeigen, z. B. "Keine Elemente im Menü.", Anstelle des aktuellen Verhaltens, das eine kleine, kleine leere Box ist. Gibt es eine Möglichkeit, dies nur in XAML zu tun?

Antwort

0

Sie könnten einen Datatrigger verwenden, um die ItemContainerStyle einzustellen:

<MenuItem x:Name="menu"> 
    <MenuItem.Header> 
     ... 
    </MenuItem.Header> 
    <MenuItem.Style> 
     <Style TargetType="{x:Type MenuItem} BasedOn="{StaticResource ItemStyle}"> 
       <Setter Property="ItemsSource" Value="{Binding Items}"> 
       <Setter Property="MenuItem.ItemContainerStyle"> 
        <Setter.Value> 
         <MenuItem.ItemContainerStyle> 
          <Style TargetType="{x:Type MenuItem}"> 
           <Setter Property="PropertyNameOne" Value="{Binding}"/> 
           <Setter Property="PropertyNameTwo" Value="{Binding}"/> 
          </Style> 
         </MenuItem.ItemContainerStyle> 
        </Setter.Value> 
       </Setter> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding Items.Count}"> 
         ... Alternate Content ItemsSource and ttemContainerStyle 
        </DataTrigger> 
       </Style.Triggers> 
      ... 

, die ohnehin die allgemeine Idee ist, bin ich sicher, dass Sie in die Details mit Ihren speziellen Bedürfnissen füllen. (d. h. das Definieren eines deaktivierten untergeordneten Menüelements mit Ihrem Platzhaltertext)