xaml:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBox VerticalAlignment="Center" FocusManager.IsFocusScope="True" Grid.ColumnSpan="2" Name="SearchTextBox" Text="{Binding Path=SearchTerm.Value, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource FontStyle}" KeyUp="SearchTextBoxKeyUp" />
<DataGrid Grid.Row="1" ItemsSource="{Binding Path=EpisodesView, Mode=TwoWay}" MouseDoubleClick="ListViewDoubleClick" Style="{StaticResource FontStyle}" KeyUp="ListViewKeyup" Name="EpisodeList" AutoGenerateColumns="False" IsReadOnly="True"
d:DataContext="{d:DesignInstance vm:Episode}">
<DataGrid.Columns>
<DataGridTextColumn Header="File" Binding="{Binding File.Name}" />
<DataGridTextColumn Header="Age" Binding="{Binding PrettyAge}" SortMemberPath="Age" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
在上面xaml底部的DataGrid中,我无法获得设计时间d:DataContext DesignInstance引用对于DataGrid本身的绑定和特定列的绑定都是正确的。
如果我在DataGrid中包含以下代码段(如上面的xaml)那么DataGridTextColumns可以正常工作,我可以获得列绑定的智能感知:
d:DataContext="{d:DesignInstance vm:Episode}
但是现在DataGrid绑定智能感知不再有效。如果我删除上面的代码片段,则反向发生:用于DataGrid绑定的Intellisense工作,但列绑定不起作用。
为清楚起见,这只是一个设计时问题。一切都运行良好。
答案 0 :(得分:1)
设置d:DataContext
属性会更改设计时间,以使用使用默认构造函数创建的新Episode
对象。您可能需要将IsDesignTimeCreatable
设置为true
d:DataContext="{d:DesignInstance vm:Episode, d:IsDesignTimeCreatable=True}"
但我希望您的问题是Episode
是项目类型,并且没有属性EpisodesView
。您需要将数据网格设计时数据上下文设置为Episodes