日期:2014-05-18  浏览次数:21007 次

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)
一层层找