我有一个非常简单的app.xaml.cs,当应用程序启动时,创建一个新的PrimeWindow,并使其可以访问到外部。有没有方法通过名称引用WPF UI元素的子元素?
public partial class App : Application
{
public static PrimeWindow AppPrimeWindow { get; set; }
private void Application_Startup(object sender, StartupEventArgs e)
{
AppPrimeWindow = new PrimeWindow();
AppPrimeWindow.Show();
}
}
为PrimeWindow的XAML看起来是这样的:
<Window x:Class="WpfApplication1.PrimeWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="500" Width="500"
xmlns:MyControls="clr-namespace:WpfApplication1">
<DockPanel Name="dockPanel1" VerticalAlignment="Top">
<MyControls:ContentArea x:Name="MyContentArea" />
</DockPanel>
</Window>
是一个完整的WPF新手,我无疑搞乱几件事情,但当下的问题是:我该怎么办在别处的代码中引用内容区域?我可以很容易地得到阿霍德的DockPanel中的,通过类似
DockPanel x = App.AppPrimeWindow.dockPanel1;
但挖得更深似乎并不容易做到。我可以得到DockPanel的子项的UIElementCollection,并且我可以通过整数索引获得单个子项,但从可维护性的角度来看,显然不是这样做的方法。
所有的答案都有很好的出于不同的原因;然而,这一点突出了最简单的方法来做到这一点,并在同一时间向我解释了别的东西。所以:接受。 – Beska 2009-12-11 22:12:22