0

为了在工具箱上显示对象并允许用户将其拖放到画布上,我使用以下控件:

<HeaderedItemsControl x:Key="itemABC" 
                Width="100"
                Height="100"
                Canvas.Left="210"
                Canvas.Top="220"
                Margin="0,0,0,0"
                Style="{StaticResource ABC_Style}">

</HeaderedItemsControl>

在风格上有定义:

<Style x:Key="ABC_Style" TargetType="HeaderedItemsControl">
    <Setter Property="Data" Value="M10.395,0.5 L30.237,0.5 30.237,5.0359993 39.499999,5.0359993 39.499999,22.75 30.237,22.75 30.237,42.660999 39.499999,42.660999 39.499999,60.375 30.237,60.375 30.237,65 10.395,65 10.395,58.124999 0.5,58.124999 0.5,10 10.395,10 z"/>
</Style>

但是,问题是 HeaderdItemsControl 没有 Path 属性(据我所知),所以我想知道我在这里还有什么其他选择。

事实上,我需要在 XAML 中的 HeaderedItemsControl 中显示路径。

谢谢。

4

1 回答 1

0

这个例子有效:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <Style TargetType="HeaderedItemsControl">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type HeaderedItemsControl}">
                        <StackPanel>
                            <Grid>
                                <Rectangle Fill="{TemplateBinding Background}"/>
                                <ContentPresenter ContentSource="Header"/>
                            </Grid>
                            <Grid>
                                <Rectangle Stroke="{TemplateBinding BorderBrush}"/>
                                <ItemsPresenter Margin="2,0,0,0"/>
                            </Grid>
                        </StackPanel>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <PathGeometry x:Key="ABC_Style">
            M10.395,0.5 L30.237,0.5 30.237,5.0359993 39.499999,5.0359993 39.499999,22.75 30.237,22.75 30.237,42.660999 39.499999,42.660999 39.499999,60.375 30.237,60.375 30.237,65 10.395,65 10.395,58.124999 0.5,58.124999 0.5,10 10.395,10 z
        </PathGeometry>
    </Window.Resources>
    <Grid>
        <HeaderedItemsControl>
            <HeaderedItemsControl.Header>
                <Path Stroke="Black" Data="{StaticResource ABC_Style}" />
            </HeaderedItemsControl.Header>
        </HeaderedItemsControl>
    </Grid>
</Window>

由于我以外的原因,默认样式HeaderedItemsControl通常实际上并不包含标题。此外,您尝试将标头设置为您拥有的路径数据的方式也不正确,因此我通过将 定义PathGeometry为静态资源然后将其包含PathHeader.

于 2012-06-28T22:03:08.977 回答