В момента се свързвам с List<T>
, така че трябва да направя конкретен набор за всяка колона отделно DataTemplate
като този:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock TextAlignment="Center"
Text="{Binding ObColl[1].Std, UpdateSourceTrigger=PropertyChanged}"
Background="{Binding ObColl[1].DienstColor, TargetNullValue=Transparent,FallbackValue=Transparent}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
но искам да създам DataTemplate
веднъж като ресурси
<DataGrid.Resources>
<DataTemplate x:Name="MyCellTemplate">
<TextBlock TextAlignment="Center"
Text="{Binding Std, UpdateSourceTrigger=PropertyChanged}"
Background="{Binding DienstColor, TargetNullValue=Transparent,FallbackValue=Transparent}" />
</DataTemplate>
</DataGrid.Resources>
и го използвайте като
<DataGridTemplateColumn CellTemplate="{StaticResource MyCellTemplate} ??{Binding ObColl[1]}??"/>
Но за да го направя, трябва да уточня DataContext
(ObColl[Idx]) в моя DataGridTemplateColumn
, но как да направя това?
РЕДАКТИРАНЕ
xaml трябва да изглежда така:
<DataGrid Name="dataGrid1"
ItemsSource="{Binding Itemlist, UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Resources>
<DataTemplate x:Key="MyCellTemplate">
<TextBlock TextAlignment="Center"
Text="{Binding Std, UpdateSourceTrigger=PropertyChanged}"
Background="{Binding DienstColor, TargetNullValue=Transparent, FallbackValue=Transparent}" />
</DataTemplate>
</DataGrid.Resources>
<DataGrid.Columns>
<!-- Column 1 -->
<DataGridTemplateColumn CellTemplate="{StaticResource MyCellTemplate}"
DataContext={Binding ObColl[0]}/>
<!-- Column Header 2 -->
<DataGridTemplateColumn CellTemplate="{StaticResource MyCellTemplate}"
DataContext={Binding ObColl[1]}/>
</DataGrid.Columns>
</DataGrid>
DataContext={Binding ObColl[1]}
е проблемната част, защото не съществува ....
DataContext
наDataGridTemplateColumn
? Това вече е имплицитно направено от контролатаDataGrid
, нали? ВDataTemplate
вече трябва да имате достъп до свойствата на обекта(ите) в колекцията, която е свързана с данни към свойствотоDataGrid.ItemsSource
. - person Sheridan   schedule 20.11.2013[0]
(за да получа първия), но ако използвам DataTemplate като StaticResource, трябва да уточня DataContext .. . - person WiiMaxx   schedule 20.11.2013List<T>
не зададено ли е като свойствоDataGrid.ItemsSource
? ако използвам DataTemplate като StaticResource, трябва да уточня DataContext - не мисля, че е вярно. Единственият път (в тази ситуация), когато трябва да посочитеDataContext
, е ако искате даBind
към обект, различен от този в колекцията, който е данни, обвързани със свойствотоDataGrid.ItemsSource
... е това< /i> какво се опитваш да направиш? - person Sheridan   schedule 20.11.2013DataGrid.ItemsSource
е списък‹MyRow›, който съдържа 2 свойства, първото еMyRowheader
, а второто еMyCellList
, което еList<T>
- person WiiMaxx   schedule 20.11.2013MyCellList
във всеки ред на вашияDataGrid
? Ако това е вярно, това същата стойност ли е, или различна стойност отMyCellList
на всеки ред? - person Sheridan   schedule 20.11.2013