C# 在WPF中从控件内部查找控件的宽度

C# 在WPF中从控件内部查找控件的宽度,c#,wpf,xaml,user-controls,C#,Wpf,Xaml,User Controls,我有一个用户控件,它需要根据控件的总宽度设置一个变量 <UserControl x:Class="MyControl" ... x:Name="MyControlRoot"> <Grid DataContext="{Binding ElementName=MyControlRoot}"> <Canvas> <Ellipse Width="{Binding MyWidth}" Height="{

我有一个用户控件,它需要根据控件的总宽度设置一个变量

<UserControl x:Class="MyControl"
   ...
    x:Name="MyControlRoot">
    <Grid DataContext="{Binding ElementName=MyControlRoot}">
        <Canvas>
            <Ellipse Width="{Binding MyWidth}" Height="{Binding MyHeight}" 
我尝试了
ActualWidth
Width
,甚至尝试访问根元素的宽度,但似乎无法在运行时确定控件的宽度;我要么得到0,要么得到NaN

我的问题是:如何在运行时从控件中访问宽度?

也许可以试试这个

Width="{Binding RelativeSource={RelativeSource AncestorType=UserControl}, Path=ActualWidth}"

您可以在执行布局后评估实际宽度。是否可以尝试在usercontrol的loaded事件中执行OnPropertyChanged(“MyWidth”)操作?这将告诉控件再次设置椭圆的宽度。这不是我想要做的。我需要的是一种在代码中访问它的方法,以便我可以稍微调整它。您可以使用转换器进行调整。使用转换器与简单地绑定到引用实际宽度的属性不同吗?当然,如果属性不可用,那么它仍然不可用?ActualWidth是DependencyProperty,因此它会通知更改,转换器将在创建时首先调用,然后在每次更改ActualWidth时调用。试试这个,否则你就找不到了。
Width="{Binding RelativeSource={RelativeSource AncestorType=UserControl}, Path=ActualWidth}"