【发布时间】:2010-01-20 07:48:39
【问题描述】:
我有一个名为SpecialExpander 的自定义扩展器控件。它基本上只是一个标准的Expander,带有一个花哨的标题和几个属性(HeaderText 和IsMarkedRead)。
我从创建一个简单的类开始:
public class SpecialExpander : Expander
{
public string HeaderText { get; set; }
public bool IsMarkedRead { get; set; }
}
然后我创建了一个样式,在扩展器上设置了几个属性(例如,边距、填充等),重要的是,它还为 HeaderTemplate 属性定义了一个自定义 DataTemplate。模板基本上是一个有两行的网格。
如下图所示……
- 对于顶行,我想要一个固定的布局(总是
TextBlockTextBlockCheckBox) - 但是,对于最后一行,我希望能够为每个扩展器提供自定义 XAML。
我尝试将<ContentControl Grid.Row="1" ... /> 放入DataTemplate,但我不知道如何正确连接。
alt text http://img85.imageshack.us/img85/1194/contentcontrolwithintem.jpg
问题
如何为我的SpecialExpander 构建DataTemplate,以便标题具有一些固定内容(顶行)和自定义内容的占位符(底行)?
对于第二个插图,我希望能够做这样的事情:
<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>
【问题讨论】:
标签: c# wpf xaml templates wpf-controls