У меня есть пользовательское управление Expander под названием SpecialExpander
. Это в основном просто стандарт Expander
с причудливым заголовком и парами свойств (HeaderText
и IsMarkedRead
).Ввод ContentControl * внутри * WPF DataTemplate?
Я начал с создания простой класс:
public class SpecialExpander : Expander
{
public string HeaderText { get; set; }
public bool IsMarkedRead { get; set; }
}
Затем я создал стиль, который задает пару свойств на детандер (например, полей, отступов и т.д.) и, что важно, он также определяет обычай DataTemplate
для HeaderTemplate
. Шаблон в основном представляет собой сетку с двумя строками.
Как показано на рисунке ниже ...
- для верхнего ряда, я хотел бы фиксированный макет (это всегда
TextBlock
TextBlock
CheckBox
) - для нижнего ряда, однако, я хочу чтобы иметь возможность предоставлять пользовательский XAML для каждого расширителя.
Я попытался положить <ContentControl Grid.Row="1" ... />
в DataTemplate
, но я не мог понять, как подключить его правильно.
alt text http://img85.imageshack.us/img85/1194/contentcontrolwithintem.jpg
alt text http://img29.imageshack.us/img29/1194/contentcontrolwithintem.jpg
Вопрос
Как я могу построить DataTemplate
для моего SpecialExpander
так, что заголовок имеет сома фиксированный контент (верхний ряд) и место-держатель для пользовательского контента (нижняя строка)?
На второй иллюстрации я хотел бы быть в состоянии сделать что-то вроде этого:
<SpecialExpander HeaderText="<Expander Header Text>" IsMarkedRead="True">
<SpecialExpander.Header>
<StackPanel Orientation="Horizontal">
<RadioButton Content="High" />
<RadioButton Content="Med" />
<RadioButton Content="Low" />
</StackPanel>
<SpecialExpander.Header>
<Grid>
<Label>Main Content Goes Here</Label>
</Grid>
</SpecialExpander>
Я люблю это, когда это случается :) –
Привет, если это нормально для вас, то, Вы можете разделить весь этот пример приложения с нами, пожалуйста, так что каждый может наслаждаться код? – SharpUrBrain