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また、ヘッダーをパス データに設定しようとしていた方法が正しくなかったため、 を静的リソースとして定義し、それをPathとして使用して を含めることで修正しましたHeader

于 2012-06-28T22:03:08.977 に答える