繁体   English   中英

如何从另一个控件获取 UserControl 中的对象

[英]How to get object in UserControl from another Control

我的 WPF 应用程序中有MainWindowMenuControlEditorControl

当我单击MenuControl的“获取高度” Button时,我想在EditorControl获取StackPanelHeight

如何在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您可以获得StackPanelActualHeight的值。

例如:将StackPanelActualHeight值传递到EditorControl内的DependencyProperty MenuControlButton被按下时,读取该依赖属性的值。

你可以这样做:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM