C# WPF ItemContainerStyle未绑定到集合项

C# WPF ItemContainerStyle未绑定到集合项,c#,wpf,xaml,binding,C#,Wpf,Xaml,Binding,我有一个名为ProjectViewModel的视图模型对象,它被指定为窗口的数据上下文。在视图模型中,我有一个ObservableCollection,它绑定到ListView的ItemsSource。在DiaryViewModel中,我有一些属性。ListViewItem项需要根据这些属性值进行样式化。当我尝试绑定到与ListViewItem关联的DiaryViewModel时,VisualStudio告诉我该属性不存在。Resharper的Intellisense告诉我绑定与ProjectV

我有一个名为ProjectViewModel的视图模型对象,它被指定为窗口的数据上下文。在视图模型中,我有一个ObservableCollection,它绑定到ListView的ItemsSource。在DiaryViewModel中,我有一些属性。ListViewItem项需要根据这些属性值进行样式化。当我尝试绑定到与ListViewItem关联的DiaryViewModel时,VisualStudio告诉我该属性不存在。Resharper的Intellisense告诉我绑定与ProjectViewModel关联。当我键入Path=时,intellisense将显示与ProjectViewModel关联的所有属性

有人能告诉我我做错了什么吗?GridColumns正确绑定到DiaryViewModel属性,而不是ItemContainerStyle


重新启动visual studio修复了此问题。运行时未解决的绑定问题现在已得到正确解决。

您是否仅在Visual Studio designer中看到该问题?或者,运行应用程序时是否也会出现问题?在后一种情况下,您能否更详细地描述生成的列表视图与您预期的不同之处?您好,fmunkert,问题在于设计器和运行时。ListView在UI中正确显示每个DiaryViewModel项目,但my ItemContainerStyle中的每个ListViewItem都无权访问与其关联的DiaryViewModel对象。相反,ItemContainerStyle可以看到ProjectViewModel,您可以在GridView中看到,其中一列可以看到并访问DiaryViewModel的Status属性。为什么不能使用ListView.ItemContainerStyle?也就是说,在运行时,您会在列表视图中看到Office或Supervisor返回的文本,但文本背景不是红色?@fmunkert这是正确的。VisualStudio的设计器告诉我Status属性不存在,因为XAML看到的是父视图模型,而不是与ListViewItem关联的视图模型
<Window x:Class="Pen.Views.PenMain"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:viewModels="clr-namespace:Pen.ViewModels"
        Title="PEN"
        ResizeMode="CanResizeWithGrip"
        mc:Ignorable="d"
        Height="700"
        Width="1000"
        WindowStartupLocation="CenterScreen"
        d:DataContext="{d:DesignInstance Type=viewModels:ProjectViewModel, IsDesignTimeCreatable=True}">

    <Window.DataContext>
        <viewModels:ProjectViewModel />
    </Window.DataContext>

    <ListView Margin="0"
                Name="lvDiaries"
                ScrollViewer.VerticalScrollBarVisibility="Auto"
                ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                VerticalAlignment="Stretch"
                ItemsSource="{Binding Path=DiariesForSelectedProject}"
                SelectedItem="{Binding Path=SelectedDiaryViewModel}"
                MouseDoubleClick="DiariesDoubleClicked"
                SelectionChanged="lvDiaries_SelectionChanged">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="DiaryId"
                                Width="0"
                                DisplayMemberBinding="{Binding Path=Id}" />
                <GridViewColumn Header="Number"
                                Width="50"
                                DisplayMemberBinding="{Binding Path=Number}" />
                <GridViewColumn Header="DiaryDate"
                                Width="90"
                                DisplayMemberBinding="{Binding Path=Date, StringFormat=d}" />
                <GridViewColumn Header="Inspector"
                                Width="150"
                                DisplayMemberBinding="{Binding Path=Inspector}" />
                <GridViewColumn Header="Status"
                                Width="130"
                                DisplayMemberBinding="{Binding Path=Status}" />
            </GridView>
        </ListView.View>

        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=Status}"
                                    Value="Supervisor Returned">
                        <Setter Property="Foreground"
                                Value="White" />
                        <Setter Property="Background"
                                Value="Red" />
                    </DataTrigger>
                    <DataTrigger Binding="{Binding Path=Status}"
                                    Value="Office Returned">
                        <Setter Property="Foreground"
                                Value="White" />
                        <Setter Property="Background"
                                Value="Red" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ListView.ItemContainerStyle>
    </ListView>

</Window>