我的WPF应用中有 MainWindow , MenuControl , EditorControl 。
当我点击Button
中的“获取高度”MenuControl
时,我想在StackPanel
中获取Height
的{{1}}。
如何在EditorControl
中获取StackPanel
对象?
MenuControl.xaml:
EditorControl
EditorControl.xaml:
<Button Content="Get Height" Click="GetStackPanelHeight_Click"/>
MenuControl.xaml.cs:
<StackPanel x:Name="xxxx">
<Label Context="test">
</StackPanel>
无法访问xxxx.AcutualHeight。
如果我在下面写,tmp = 0
public void GetStackPanelHeight_Click(object sender, RoutedEventArgs e)
{
var tmp = xxxx.ActualHeight;
}
我该怎么做?
答案 0 :(得分:1)
最快的解决方案之一是:
在EditorControl
中,您可以获得StackPanel
ActualHeight
的价值。
例如:
将StackPanel
的{{1}}值传递到ActualHeight
内的DependencyProperty
。
当推送EditorControl
中的Button
时,请读取该依赖项属性的值。
答案 1 :(得分:0)
你可以这样做:
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
}
//....
}