使用工具箱包装数据网格

时间:2011-09-21 17:04:13

标签: wpf wpfdatagrid

我有一个wpf应用程序。

我希望应用程序中的所有数据网格都有一组按钮。

尝试使用装饰器和装饰器但没有成功(dataGrid停止显示行)

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

鉴于您希望在工具箱按钮后面具有功能(我假设它需要对网格的引用),为此继承HeaderedContentControl可能是有意义的。这意味着您可以在控件中添加任何内容,但是可以覆盖元数据以为此添加验证。

任何地方,这里是xaml:

<!-- ToolBoxGridControl.xaml -->
<HeaderedContentControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
x:Class="WpfApplication3.ToolBoxGridControl">   
<HeaderedContentControl.Header>
    <StackPanel Orientation="Horizontal">
        <Button/>
        <Button/>
        <Button/>
    </StackPanel>
</HeaderedContentControl.Header>
<HeaderedContentControl.Template>
    <ControlTemplate TargetType="HeaderedContentControl">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <ContentControl Grid.Row="0" Content="{TemplateBinding Header}"/>
            <ContentControl Grid.Row="1" Content="{TemplateBinding Content}"/>
        </Grid>
    </ControlTemplate>
</HeaderedContentControl.Template>
</HeaderedContentControl>

简单的代码隐藏(可以放置工具箱实现)。

public partial class ToolBoxGridControl : HeaderedContentControl
{       
    private DataGrid DataGrid { get { return (DataGrid)Content; } }

    public ToolBoxGridControl()
    {
        this.InitializeComponent();
    }
}

要实际使用,您只需使用数据网格将以下内容添加到XAML

即可
<local:ToolBoxGridControl>
    <DataGrid/> 
</local:ToolBoxGridControl>