MVVC şablonunu özümseme sürecindeyim ve bir datagrid içinde bir DataTemplate içinden bir viewmodel özelliği bağlamada sorun yaşıyorum. DataTemplate dışında bir metin bloğum varsa, o da iyi çalışır (ben doğrudan UserConrol, yani VM) veri bağlamı başvuruyor, ancak DataTemplate içinden düz metin özelliğini döndürmez. Ancak yinelenen IEnumerable öğeden bir özellik döndürecektir.Silverlight DataGrid.Celltemplate ViewModel ile Bağlama
<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>
DataTemplate ile görmezden gelen bir çeşit sorun var mı? "{Binding Path = DataContext.testText, ElementName = View}", DataTemplate'dekiler dışındaki tüm öğeler için çalışır. (Not: DG'nin dışındaki 1. Textblock'un, ElementName'a ihtiyaç duymadığını biliyorum ama ben kendim için doğru şeyi referans gösterdiğimi ispatladım.)
Jaime'nin postası WPF'ye özgüdür, ancak bunun neden WPF ve Silverlight'ta işe yaramadığını kesinlikle açıklar. Bununla birlikte, Jaime'nin gönderisindeki geçici çözüm, öğe-öğe veri bağlama için çalışmaz, bu nedenle bu sorunu çözmez. –