WPF Custom Grid с содержимым по умолчанию - PullRequest
0 голосов
/ 23 мая 2011

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

  • По умолчанию должно быть несколько строк
  • Он должен иметь некоторые дочерние элементы управления в эти строки (в основном кнопки и линии) по умолчанию
  • Содержание не по умолчанию должен редактироваться дизайнером или запись содержимого в xaml окна, в которое вставлен элемент управления

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

1 Ответ

2 голосов
/ 23 мая 2011

Мартин, ты не можешь этого сделать.Сетка - это тип панели с содержимым в качестве дочернего свойства.Таким образом, если вы добавите что-либо к нему в XAML-конструкторе, оно будет перенесено.

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

Пример:

'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>
...