C# WPF ItemContainerStyle未绑定到集合项
我有一个名为ProjectViewModel的视图模型对象,它被指定为窗口的数据上下文。在视图模型中,我有一个ObservableCollection,它绑定到ListView的ItemsSource。在DiaryViewModel中,我有一些属性。ListViewItem项需要根据这些属性值进行样式化。当我尝试绑定到与ListViewItem关联的DiaryViewModel时,VisualStudio告诉我该属性不存在。Resharper的Intellisense告诉我绑定与ProjectViewModel关联。当我键入Path=时,intellisense将显示与ProjectViewModel关联的所有属性 有人能告诉我我做错了什么吗?GridColumns正确绑定到DiaryViewModel属性,而不是ItemContainerStyleC# WPF ItemContainerStyle未绑定到集合项,c#,wpf,xaml,binding,C#,Wpf,Xaml,Binding,我有一个名为ProjectViewModel的视图模型对象,它被指定为窗口的数据上下文。在视图模型中,我有一个ObservableCollection,它绑定到ListView的ItemsSource。在DiaryViewModel中,我有一些属性。ListViewItem项需要根据这些属性值进行样式化。当我尝试绑定到与ListViewItem关联的DiaryViewModel时,VisualStudio告诉我该属性不存在。Resharper的Intellisense告诉我绑定与ProjectV
重新启动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>