WPF:如何访问Custom Control的内部元素
我定义了一个Custom Control:
- XML code
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:Test"> <Style TargetType="{x:Type local:CC1}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type local:CC1}"> <Viewbox x:Name="MView"> <Grid Width="50" Height="50" x:Name="MGrid" Background="Red"> <Grid.RenderTransform> <TranslateTransform X="0" Y="0"/> </Grid.RenderTransform> </Grid> </Viewbox> </ControlTemplate> </Setter.Value> </Setter> </Style></ResourceDictionary>
1. 我想在CC1的.cs文件中对MGrid的进行变形如实现移动到某一位置:
- C# code
public class CC1 : Control { static CC1() { DefaultStyleKeyProperty.OverrideMetadata(typeof(CC1), new FrameworkPropertyMetadata(typeof(CC1))); } public void MoveTo(double x, double y) { // 控制MGrid的RenderTransform的TranslateTransform,请问如何控制? } }
2. 我想在调用CC1的程序中(也就是外部)对CC1的MGrid的RenderTransform进行控制,请问应该如何暴露到外边?是通过上述方法的形式么?不能像UserControl那样直接将MGrid起一个名字就暴露到外边么?
请指教下实现方法(大家正常的做法呢?),非常感激!
[解决办法]
VisualTreeHelper.GetChild(ElementName,Index)
一层层找