2014-09-04 5 views
2

Давайте предположим, что у меня есть следующий шаблон управления:WPF - Border шаблон с содержанием

<ControlTemplate x:Key="Test"> 
    <Grid> 
     <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" Width="33" Height="33" CornerRadius="3"/> 
     <ContentControl Content="{TemplateBinding Property=ContentControl.Content}" VerticalAlignment="Center" HorizontalAlignment="Center"/> 
    </Grid> 
</ControlTemplate> 

Как я могу изменить содержимое элемента управления в WPF? Я пытался что-то вроде

<Control Template="{StaticResource Test}" BorderBrush="Black" Content="aa"></Control> 

Но когда я делаю, так что я это говорит мне, что содержание собственности не признается или не найден.

+1

Control является базовым классом и не имеет содержимого свойства. – Maximus

ответ

3

Вам необходимо использовать ContentControl самостоятельно, чтобы сделать то, что вы хотите ... чтобы быть ясным, элемент ContentControl не имеет ничего общего с элементом Control. Он используется для отображения объекта данных и необязательно применяет объект DataTemplate. DataTemplate это та часть, которую можно настроить:

<ContentControl Content="{Binding SomeDataObject}" 
    ContentTemplate="{StaticResource SomeDataObjectTemplate}" /> 

...

В некоторых Resources коллекции:

<DataTemplate x:Key="SomeDataObjectTemplate" DataType="{x:Type Prefix:SomeDataObject}"> 
    <Grid> 
     <Border BorderBrush="Black" BorderThickness="1" CornerRadius="3" /> 
     <TextBlock Text="{Binding}" /> 
    </Grid> 
</DataTemplate> 

Ваш единственной альтернативой является объявить UserControl и выставить определенные части разметка как DependencyProperty s, с которой вы можете связываться данными извне контроля:

<Prefix:YourUserControl CustomContent="{Binding SomeDataObject}" /> 

Внутри управления:

<ContentControl Content="{Binding CustomContent, 
    RelativeSource={RelativeSource AncestorType={x:Type Local:YourUserControl }}}" /> 
1

Поскольку Control не является результатом ContentControl, он не раскрывает свойство Content. Взгляните на дополнительную информацию here.

Смежные вопросы