2009-09-02 49 views
1

問題我有一個XAML MenuItem DataBound ItemsSource工作正常,但有一個小問題。當我查看MenuItem並且沒有任何數據綁定項目時,ParentMenu將被禁用,並且顯示正常,沒有綁定錯誤(如預期的ItemsSource爲空)。如果修改了ObservableCollection並添加了一個項目,則會刷新綁定並顯示MenuItem。但是,ItemContainerStyle不會將MenuItem.Tag屬性更新爲數據綁定值。奇怪的XAML MenuItem DataBound ItemsSource清空後ItemsSource

只要ItemsSource從不啓動爲空或從未減少爲空,MenuItem就會正常工作。有沒有人有任何提示這樣的問題?我想擁有的ItemsSource和ItemContainerStyle在任何時候都正確刷新甚至當的ItemsSource

XAML如下所示開始爲空:

<MenuItem x:Name="MenuItem" Header="Menu" ItemsSource="{Binding Source={StaticResource MenuItemViewSource}}" ItemTemplate="{StaticResource MenuDataTemplate}"> 
    <MenuItem.ItemContainerStyle> 
     <Style TargetType="{x:Type MenuItem}"> 
      <Setter Property="Tag" Value="{Binding Path=ID, Source={StaticResource MenuItemViewSource}}"/> 
      <Setter Property="Background" Value="Red"/> 
      <Setter Property="Opacity" Value="0.5"/> 
      <EventSetter Event="Click" Handler="MenuItem_Click"/> 
     </Style> 
    </MenuItem.ItemContainerStyle> 
    <MenuItem.Style> 
     <Style TargetType="{x:Type MenuItem}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=Items.Count, RelativeSource={RelativeSource Self}}" Value="0"> 
        <Setter Property="IsEnabled" Value="False"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </MenuItem.Style> 
</MenuItem> 

回答

0

只是一個猜測,但你嘗試過綁定到的ID沒有將綁定的DataSource設置爲視圖源的底層數據?就像這樣:

<Setter Property="Tag" Value="{Binding ID}"/> 

一個像這樣的風格中結合應綁定到的菜單項本身,這是該菜單項代表項目的DataContext的。像你在做的那樣綁定回查看源可能會讓它感到困惑。

+0

我是否需要在具有ItemsSource集的MenuItem上設置DataContext? – Luke

+0

不,DataContext從「父」菜單項中的ItemsSource綁定到達每個「子」菜單項。 –