0

カスタム コントロールに問題があります。ユーザーが「選択」できる5〜8個のパスがあるカスタムコントロールがあります。これらのパスのうち、ラベルを付けたい (カスタム コントロール内)。ここで、内部のコンテンツを変更できます (そのカスタム コントロールを使用するウィンドウから)。カスタム コントロールの XAML は次のようになります。

<FirstMolarTooth ..........>
<DockPanel>
    <Label Name="lbl_tooth" DockPanel.Dock="Top" FontSize="10" HorizontalAlignment="Center" />
    <Grid DockPanel.Dock="Bottom" HorizontalAlignment="Center">
        <Path ......./>
    </Grid>
</DockPanel>
</FirstMolarTooth>

そのカスタムコントロールを使用するウィンドウからそのラベルに到達するにはどうすればよいですか?? 何かのようなもの:

<local:FirstMolarTooth x:Name="Tooth_15" ........>
<lbl_tooth Content="15" />
</local:FirstMolarTooth>

また

<local:FirstMolarTooth .... Content="15">
</local:FirstMolarTooth>

2番目の問題は、使用するウィンドウでカスタムコントロールを回転させることです:

<local:FirstMolarTooth ....>
    <local:FirstMolarTooth.LayoutTransform>
        <RotateTransform CenterX="0.5" CenterY="0.5" Angle="180"/>
    </local:FirstMolarTooth.LayoutTransform>
</local:FirstMolarTooth>

私の問題は、それを(論理的に)行うと、コントロール全体が(ラベル付きで)回転することです。ラベルではなくパスだけを回転させたい。そのラベル「isRotated」のカスタムプロパティのようなことができると思いました.trueに設定されている場合、トリガーを使用して回転(角度0を設定)を「リセット」する必要があります。しかし、私はそれを行うことができません。(XAML からそのカスタム プロパティにアクセスする必要がありますか?それともコード内のみでしょうか?それはおそらく、XAML からアクセスしようとする問題でした)。

カスタム コントロールからラベルを削除して、そこにパスだけを配置し、その後、パスとラベルだけを回転させてウィンドウに表示できることを知っています。ただし、ユーザーは「全体」のカスタム コントロール (歯の選択) を選択でき、歯の「セグメント」(パス) を選択できます。したがって、そのカスタムコントロール内にすべてを入れたいと思います。

アドバイスをありがとう。

4

1 に答える 1

1

最初の問題については、lbl_tooth を FirstMolarTooth Content プロパティにバインドするだけです。それが機能しない場合は、FirstMolarTooth(of string) 内に新しい依存関係プロパティを作成し、それに対してバインドします。その後、後でそのプロパティをカスタム制御外で変更できます。

   <FirstMolarTooth x:Name="MOLAR" ..........>
    <DockPanel>
        <Label Name="lbl_tooth" DockPanel.Dock="Top" FontSize="10"                       HorizontalAlignment="Center" 
           Content="{Binding Content, ElementName=MOLAR}" />
        <Grid DockPanel.Dock="Bottom" HorizontalAlignment="Center">
            <Path ......./>
        </Grid>
    </DockPanel>

2番目の問題については、外部で設定できる DOUBULE 型の新しい依存関係プロパティを作成するだけです。依存関係プロパティを作成するには、Google で検索するか、このフォーラムを検索してください。何百万もの答え。

   <FirstMolarTooth x:Name="MOLAR" ..........>
    <DockPanel>
        <Label Name="lbl_tooth" DockPanel.Dock="Top"   FontSize="10"                       HorizontalAlignment="Center" 
            Content="{Binding Content, ElementName=MOLAR}" />
        <Grid DockPanel.Dock="Bottom" HorizontalAlignment="Center">
            <Path .......>
              <Path.LayoutTransform>
                  <RotateTransform CenterX="0.5" CenterY="0.5" 
                     Angle="{Binding YourNewAngleProperty, ElementName=MOLAR}"/>
              </Path.LayoutTransform>
            </Path>
        </Grid>
    </DockPanel>
于 2013-05-10T05:47:59.653 に答える