C# WPF自定义控件-到达内部元素,仅旋转自定义控件的一部分

C# WPF自定义控件-到达内部元素,仅旋转自定义控件的一部分,c#,wpf,custom-controls,rotatetransform,C#,Wpf,Custom Controls,Rotatetransform,自定义控件有问题。 我有一个自定义控件,其中我有5-8条路径,用户可以“选择”。在这些路径中,我希望有一个标签(在自定义控件内),在这里我可以更改其中的内容(从我使用该自定义控件的窗口)。 自定义控件的我的XAML如下所示: <FirstMolarTooth ..........> <DockPanel> <Label Name="lbl_tooth" DockPanel.Dock="Top" FontSize="10" HorizontalAlignmen

自定义控件有问题。 我有一个自定义控件,其中我有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 ....>
    <local:FirstMolarTooth.LayoutTransform>
        <RotateTransform CenterX="0.5" CenterY="0.5" Angle="180"/>
    </local:FirstMolarTooth.LayoutTransform>
</local:FirstMolarTooth>

我的问题是,当我这样做时(逻辑上),这会旋转整个控件(带有标签)。我只想旋转路径,而不是标签。我想我可以为标签“isRotated”做一些自定义属性,当它设置为true时,我应该用触发器“重置”旋转(设置角度0)。但我无法做到这一点。(我应该从XAML访问该自定义属性吗?还是只在代码中访问?这可能是我尝试从XAML访问它时遇到的问题)

我知道我可以从自定义控件中删除标签,在其中只有路径,然后在窗口中旋转路径和标签。但用户可以选择“整体”自定义控件(选择齿),也可以选择齿的“段”(路径)。因此,我希望它的所有内容都在自定义控件中


谢谢您的建议。

对于您的第一个问题,只需将lbl_-tooth与FirstMolarTooth内容属性绑定即可。如果这不起作用,请在FirstMolarTooth(字符串)内创建新的依赖项属性并对其进行绑定。然后,您可以稍后在custo控制之外更改该属性

   <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>

对于第二个问题,只需创建可以在外部设置的Double类型的新依赖项属性。要创建依赖属性,您可以使用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>

是的,我的问题是您的NewAngleProperty在XAML代码中是未知的。第一个问题解决了(这是主要问题)。标记为答案的。谢谢
   <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>