.net 空ItemsSource后出现奇怪的XAML MenuItem数据绑定ItemsSource刷新问题

.net 空ItemsSource后出现奇怪的XAML MenuItem数据绑定ItemsSource刷新问题,.net,wpf,data-binding,itemssource,.net,Wpf,Data Binding,Itemssource,我有一个XAML MenuItem数据绑定ItemsSource,它工作正常,但有一个小问题。当我查看菜单项并且没有数据绑定项时,ParentMenu将被禁用,它看起来很好,没有绑定错误(正如预期的那样,ItemsSource为空)。如果修改了ObservableCollection并添加了一个项,则绑定将刷新并显示菜单项。但是,ItemContainerStyle不会将MenuItem.Tag属性更新为数据绑定值 菜单项可以正常工作,只要ItemsSource从不以空开始或从不减少为空。有人对

我有一个XAML MenuItem数据绑定ItemsSource,它工作正常,但有一个小问题。当我查看菜单项并且没有数据绑定项时,ParentMenu将被禁用,它看起来很好,没有绑定错误(正如预期的那样,ItemsSource为空)。如果修改了ObservableCollection并添加了一个项,则绑定将刷新并显示菜单项。但是,ItemContainerStyle不会将MenuItem.Tag属性更新为数据绑定值

菜单项可以正常工作,只要ItemsSource从不以空开始或从不减少为空。有人对这样的问题有什么建议吗?我想让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>

只是猜测,但是您是否尝试过绑定到基础数据的ID,而不将绑定的数据源设置为视图源?像这样:

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


类似于样式中的绑定应该绑定到MenuItem本身的DataContext,这是MenuItem表示的项。像您这样绑定回视图源可能会混淆它。

是否需要在设置了ItemsSource的菜单项上设置DataContext?否,DataContext从“父”菜单项中的ItemsSource绑定传递到每个“子”菜单项。