正常に動作している XAML MenuItem DataBound ItemsSource がありますが、小さな問題があります。MenuItem を表示し、データバインドされた項目がない場合、ParentMenu は無効になり、バインド エラーなしで正常に表示されます (予想どおり、ItemsSource は空です)。ObservableCollection が変更され、項目が追加されると、バインディングが更新され、MenuItem が表示されます。ただし、ItemContainerStyle は MenuItem.Tag プロパティをデータバインドされた値に更新しません。
MenuItem は、ItemsSource が空として開始されたり、空に縮小されたりしない限り、正常に機能します。そのような問題のヒントはありますか?ItemsSource が空で始まる場合でも、ItemsSource と ItemContainerStyle を常に正しく更新したいと考えています。
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>