Silverlight DataGrid.Celltemplate Binding do ViewModel
Jestem w trakcie wszczepiania wzorca MVVC i mam problem z powiązaniem właściwości w viewmodelu z wewnątrz DataTemplate w obrębie datagrid. Jeśli mam blok tekstowy poza DataTemplate w kolumnie, to działa dobrze (ponieważ odwołuję się bezpośrednio do kontekstu danych UserConrol, tj. Maszyny wirtualnej), ale z wewnątrz DataTemplate nie zwróci właściwości zwykłego tekstu. Zwróci jednak właściwość z iterowanego elementu IEnumerable.
<UserControl xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
x:Class="Timesheet.Silverlight.Modules.Views.HistoryView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:Commands="clr-namespace:Microsoft.Practices.Composite.Presentation.Commands;assembly=Microsoft.Practices.Composite.Presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ViewModels="clr-namespace:Timesheet.Silverlight.Modules.ViewModels"
x:Name="View">
<StackPanel>
<TextBlock Text="{Binding Path=DataContext.testText, ElementName=View}" />
<data:DataGrid Height="280" Width="500" ItemsSource="{Binding TimeSlots}" AutoGenerateColumns="False" >
<data:DataGrid.Columns>
<data:DataGridTextColumn Header="Allocation Area" Binding="{Binding TimeAllocationArea.TimeAllocationName}" Width="200" />
<data:DataGridTextColumn Header="Start" Binding="{Binding StartTime}" Width="80" />
<data:DataGridTextColumn Header="End" Binding="{Binding Path=DataContext.testText, ElementName=View}" Width="80" />
<data:DataGridTemplateColumn Header="Modify" Width="200" >
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=DataContext.testText, ElementName=View}" />
</StackPanel>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
</data:DataGrid.Columns>
</data:DataGrid>
</StackPanel>
</UserControl>
Czy jest jakiś problem z DataTemplate, który im ignoruje? Zwróć uwagę, że „{Ścieżka powiązania = DataContext.testText, ElementName = View}” działa dla wszystkich elementów oprócz tego w szablonie DataTemplate. (Uwaga: Wiem, że pierwszy blok tekstowy poza DG nie potrzebuje elementu ElementName itp., Ale właśnie zrobiłem to w ten sposób, aby udowodnić sobie, że jego odniesienie jest właściwe)