C# WPF自定义控件-到达内部元素,仅旋转自定义控件的一部分
自定义控件有问题。 我有一个自定义控件,其中我有5-8条路径,用户可以“选择”。在这些路径中,我希望有一个标签(在自定义控件内),在这里我可以更改其中的内容(从我使用该自定义控件的窗口)。 自定义控件的我的XAML如下所示: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
<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>