[英]How to get object in UserControl from another Control
我的 WPF 应用程序中有MainWindow 、 MenuControl 、 EditorControl 。
当我单击MenuControl
的“获取高度” Button
时,我想在EditorControl
获取StackPanel
的Height
。
如何在EditorControl
获取StackPanel
对象?
菜单控件.xaml:
<Button Content="Get Height" Click="GetStackPanelHeight_Click"/>
编辑器控件.xaml:
<StackPanel x:Name="xxxx">
<Label Context="test">
</StackPanel>
MenuControl.xaml.cs:
public void GetStackPanelHeight_Click(object sender, RoutedEventArgs e)
{
var tmp = xxxx.ActualHeight;
}
无法访问 xxxx.AcutualHeight。
如果我在下面写,tmp=0
var editorControl = new EditorControl();
var tmp = editorControl.xxxx.ActualHeight;
我该怎么做?
最快的解决方案之一是:在EditorControl
您可以获得StackPanel
的ActualHeight
的值。
例如:将StackPanel
的ActualHeight
值传递到EditorControl
内的DependencyProperty
。 当MenuControl
的Button
被按下时,读取该依赖属性的值。
你可以这样做:
public class FirstUserControl
{
public delegate void PropertyChangedHandler(object obj);
public static event PropertyChangedHandler StackPanelHeightChanged = delegate { };
public void GetStackPanelHeight_Click(object sender, RoutedEventArgs e)
{
//Example: here I fire the function in the second UC
var tmp = xxxx.ActualHeight;
StackPanelHeightChanged(tmp);
}
}
——
public class SecondUserControl
{
public SecondUserControl()
{
FirstUserControl.StackPanelHeightChanged+= OnStackPanelHeightChanged;
}
public void OnStackPanelHeightChanged(object obj)
{
//here obj is the Height of the StackPanel
}
//....
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.