обертывание сетки данных с помощью набора инструментов - PullRequest
1 голос
/ 21 сентября 2011

У меня есть приложение wpf.

Я хочу, чтобы все мои сетки данных в приложении имели над ними набор кнопок.

Попытка безуспешно использовать декоратор и декоратор (dataGrid остановленпоказаны строки)

Есть предложения?

1 Ответ

1 голос
/ 23 сентября 2011

Учитывая, что вы хотите иметь функциональность за кнопками панели инструментов (что, как я полагаю, потребует ссылки на сетку), вероятно, для этого имеет смысл наследовать от 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>
...