Wpf - обновление ICollectionView приводит к сбою переопределения стиля

У меня есть стиль по умолчанию для пункта меню и стилей контекстного меню следующим образом:

<ResourceDictionary>
    <Style TargetType="{x:Type MenuItem}">
         <Setter Property="Background" Value="Blue"/>
         <Setter Property="Foreground" Value="White" />
    </Style>
    <Style TargetType="{x:Type ContextMenu}">
        <Setter Property="Background" Value="LightBlue"/>
    </Style> 
</ResourceDictionary>

При отображении контекстного меню в элементе списка, привязанном к наблюдаемой коллекции, мне нужно переопределить стиль следующим образом:

<ListView.Resources>
    <Style TargetType="{x:Type MenuItem}">
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="Foreground" Value="Black" />
    </Style>
    <Style TargetType="{x:Type ContextMenu}">
        <Setter Property="Background" Value="WhiteSmoke"/>
    </Style>
    <ContextMenu x:Key="ItemContextMenu" ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}, Path=ContMenu}"/>
</ListView.Resources>
<ListView.ItemContainerStyle>
    <Style BasedOn="{StaticResource ListItemsStretched}" TargetType="{x:Type ListViewItem}">
        <Setter Property="ContextMenu" Value="{StaticResource ItemContextMenu}"/>
    </Style>
</ListView.ItemContainerStyle>

Это работает нормально, пока я не получу событие, которое я создал в связанной ObservableCollection, чтобы уведомить меня, когда какое-либо свойство изменилось, это используется, так что я могу обновить ICollectionView, что приведет к тому, что текущая сортировка списка будет оставаться истинной. Однако если контекстное меню открыто в представлении списка при возникновении этого события, оно возвращается к стилю по умолчанию, а не к стилю переопределения.

Любая помощь будет оценена по этому вопросу? Я подозреваю, что это что-то простое, что я пропускаю.

0 ответов

Другие вопросы по тегам