У меня есть Grid
и где-то в нем ContentControl
:
<Grid Name="OuterGrid">
<!-- some controls on the grid -->
<ContentControl Name="dbg1" Content="{Binding Mode=OneWay}" ContentTemplateSelector="{StaticResource SBATemplateSelector}"></ContentControl>
<!-- some more controls on the grid -->
</Grid>
Выбор шаблона не очень интересен:
<src:SBATemplateSelector x:Key="SBATemplateSelector"
NormalTemplate="{StaticResource SBAreaTemplate1}"
BigTemplate="{StaticResource SBAreaTemplate2}" />
Но из шаблонов я быЯ хотел бы передать содержимое и поместить его в 'OuterGrid', установив присоединенные свойства Grid.Row
и т. д.:
<DataTemplate x:Key="SBAreaTemplate1" DataType="src:XCViewModel">
<DataTemplate.Resources>
<Style TargetType="ContentPresenter"> <!-- should go for only the 'parent' contentpresenter -->
<Setter Property="Grid.Row" Value="4" />
<Setter Property="Grid.Column" Value="0" />
<Setter Property="Grid.RowSpan" Value="5" />
<Setter Property="Grid.ColumnSpan" Value="10" />
</Style>
</DataTemplate.Resources>
<Border Name="sbAreaBorder" BorderThickness="1" BorderBrush="Black">
<ScrollViewer Name="sblbScroller" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<StackPanel Orientation="Vertical">
<ItemsControl Name="notRelevantListBox" ItemsSource="{Binding}" ItemTemplateSelector="{StaticResource NotRelevantSelector}" />
</StackPanel>
</ScrollViewer>
</Border>
</DataTemplate>
, поэтому я даже не хочу привязывать, просто устанавливаю свойства в статические значения.Независимо от того, что я делаю, я не могу заставить свойства вступить в силу на ContentPresenter
из DataTemplate
.
Существуют почти пригодные для использования решения (например, https://social.msdn.microsoft.com/Forums/vstudio/en-US/cc9ed724-600e-415a-b775-bae09eea66f8/cant-use-attached-properties-inside-a-datatemplate?forum=wpf), но они всегда применяют ItemsControl
- у меня нет ItemsControl
, я хочу, чтобы позиционирование работало для всего DataTemplate
.