2011-05-23 3 views
0

Я хочу создать пользовательского элемента управления, наследующий WPF сетки с этими функциями:WPF Пользовательские сетки с содержанием по умолчанию

  • Он должен иметь некоторые строки по умолчанию
  • Он должен иметь некоторые дочерние элементы управления в эти строки (главным образом кнопки и линии) по умолчанию
  • НЕРАСПРОСТРАНЕНИЯ по умолчанию содержания должно быть редактируемым дизайнером или содержанием Writting в XAML окна, где управление вставляется

Я попытался унаследовать сетку и добавление контента в конструкторе, но как только я добавляю больше контента разработчиком, содержимое по умолчанию теряется. Я пробовал много вещей, но я не мог этого сделать. Возможно ли это? Как я могу это сделать?

ответ

1

Martin, Вы не можете этого сделать. Сетка представляет собой тип панели, с содержанием в качестве дочернего объекта. Итак, если вы добавите что-нибудь к нему в XAML-дизайнере, оно будет отложено.

Однако вы можете переопределить Childern свойство, и добавить к классу <ContentProperty("PropertyName")> как в примере -

Ex:

'Code: 
<ContentProperty("Children")> _ 
Public Class MyGrid 
Public Overloads ReadOnly Property Children As UIElementCollection 
    Get 
     Return Me.ContentGrid.Children 
    End Get 
End Property 
End Class 

'Markup 
<Grid x:Class="MyGrid" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
<Grid.RowDefinitions> 
    <RowDefinition /> 
    <RowDefinition /> 
    <RowDefinition /> 
</Grid.RowDefinitions> 
<Button Content="Button" Height="23" HorizontalAlignment="Center" VerticalAlignment="Center" Width="75" /> 
<Button Content="Button" Height="23" HorizontalAlignment="Center" VerticalAlignment="Center" Width="75" Grid.Row="2" /> 
<Button Content="Button" Height="23" HorizontalAlignment="Center" VerticalAlignment="Center" Width="75" Grid.Row="1" /> 

<Grid Name="ContentGrid" Grid.RowSpan="3"></Grid> 
</Grid> 
+0

Удивительный ... Я попытался это и работает хорошо. Мне нужно немного настроить его. Я хочу, чтобы пользователь-разработчик мог помещать элементы управления в определенные строки, поскольку это была та же самая сетка, которую он видит. Большое спасибо – Martin

+0

@ Code0987 +1 от будущего, безусловно, полезный ответ, и научил меня тому, что я не знал! Это должно было быть отмечено как ответ. – Feign

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