el XAML: Cómo establecer d: DataContext d: DesignInstance en la cuadrícula de datos
<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>
En la cuadrícula de datos en la parte inferior de la xaml anteriormente no puedo obtener AMBOS el tiempo de diseño d: las referencias DataContext DesignInstance son correctas tanto para el enlace del DataGrid mismo e enlaces de las columnas específicas.
Si incluyo el siguiente fragmento de la cuadrícula de datos (como el xaml arriba) los DataGridTextColumns funciona, y consigo IntelliSense para los enlaces de la columna:
d:DataContext="{d:DesignInstance vm:Episode}
Pero ahora el intellisense vinculante cuadrícula de datos ya no funciona. Si elimino el fragmento, sucede lo contrario: el enlace Intellisense para DataGrid funciona, pero los enlaces de columna no.
Para que quede claro, este es solo un problema de tiempo de diseño. Todo funciona bien en tiempo de ejecución.
Mi sensación es que esto es sólo el comportamiento incorrecto del editor de Visual Studio XAML. Es un poco raro en este contexto. – ColinE
Entonces, ¿sería correcto establecer DesignInstance en DataGrid con el tipo de filas? –