我的自定义控件有问题。 我有一个自定义控件,我有5-8个路径,用户可以“选择”。这些路径我希望有标签(在自定义控件内),我可以在里面更改内容(从Window,我使用该自定义控件)。 我的自定义控件的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>
第二个问题是我在窗口中旋转自定义控件,我将其用于:
<local:FirstMolarTooth ....>
<local:FirstMolarTooth.LayoutTransform>
<RotateTransform CenterX="0.5" CenterY="0.5" Angle="180"/>
</local:FirstMolarTooth.LayoutTransform>
</local:FirstMolarTooth>
我的问题是,当我这样做(逻辑上)时,这会旋转整个控件(带有标签)。我想只旋转路径而不是标签。我认为我可以为标签“isRotated”执行类似自定义属性的操作,当它设置为true时,我应该使用触发器“重置”旋转(设置角度0)。但我无法做到这一点。 (我应该从XAML到达那个自定义属性吗?还是仅在代码中?这可能是我试图从XAML到达它的问题)。
我知道我可以从自定义控件中删除标签,并且只有路径,然后在窗口中只旋转路径和标签。但是用户可以选择“整体”自定义控制(选择牙齿),并且可以选择牙齿的“段”(路径)。所以我想把它放在那个自定义控件里面。
感谢您的任何建议。
答案 0 :(得分:1)
对于您的第一个问题,只需将lbl_tooth与FirstMolarTooth Content属性绑定即可。如果这不起作用,请在FirstMolarTooth(字符串)中创建新的依赖项属性并绑定它。然后,您可以稍后在客户控制之外更改该属性。
<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>
对于第二个问题,只需创建可在外部设置的DOUBULE类型的新依赖项属性。要创建依赖项属性,您可以谷歌搜索或搜索此论坛。数以百万计的答案。
<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>