Sono in procinto di impiantare il pattern MVVC e sto avendo problemi ad associare una proprietà nel viewmodel all'interno di un DataTemplate all'interno di un datagrid. Se ho un blocco di testo al di fuori del DataTemplate nella colonna funziona correttamente (poiché sto facendo riferimento direttamente al datacontext di UserConrol, cioè alla VM) tuttavia dall'interno del DataTemplate non restituirà la proprietà di testo normale. Restituirà comunque una proprietà dall'elemento IEnumerable iterated.Silverlight DataGrid.Celltemplate Collegamento a ViewModel
<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>
C'è una sorta di problema con il DataTemplate che im ignorando ?? Nota: "{Binding Path = DataContext.testText, ElementName = View}" funziona per tutti gli elementi tranne quello nel DataTemplate. (Nota: so che il 1st Textblock all'esterno della DG non ha bisogno di ElementName ecc ma l'ho appena fatto in questo modo per dimostrare a me stesso che fa riferimento alla cosa giusta)
Il post di Jaime è specifico per WPF ma sicuramente spiega perché questo non funziona in WPF e Silverlight. Tuttavia, la soluzione alternativa nel post di Jaime non funzionerà per l'associazione dati elemento-elemento in modo che non risolva questo problema. –