在wpf中调用从用户控件到路由事件的方法?

时间:2014-11-18 07:41:05

标签: c# wpf

任何人都可以帮我解决这个问题 我有一个带有一个窗口和一个用户控件的wpf应用程序。

用户控制:InventoryMenu
窗口:MenuView

我在InventoryMenu上创建了一个路由事件:

NewImage.AddHandler(Image.MouseDownEvent, new RoutedEventHandler(First_Click1));  

现在在我的First_Click1方法上,我正在调用MenuView的方法

private void First_Click(object sender, RoutedEventArgs e)  
{  
    MenuView menu = new MenuView();  
    menu.showInventoryView();  
} 

现在来自MenuView:

public void showInventoryView()
{  
    Inventory inventoryView = new Inventory();  
    ChildView.Children.Clear();
    ChildView.Children.Add(inventoryView);  
    MessageBox.Show("I was called");  
}

问题是该方法被调用但视图未显示?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可能需要设置invertoryView.Visible = true;inventoryView.SetVisible(true);

答案 1 :(得分:0)

窗口没有儿童属性。 Window是一个ContentControl,只有 一个小孩。 你可以很容易地在xaml中完成它。以下是一些如何做到的示例:

<Window x:Class="TestNamespace.MenuView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:TestNamespace"
    Title="MenuView" Height="300" Width="300">
    <local:InventoryMenu/>
</Window>

where local是放置UserControl的Local Namespace。而现在Window的孩子就是你的UserControl。如果你想在窗口中有多个UserControl,你可以说Window of Child是一个类似Grid或StackPanel的面板,并将你的UserControl放在Panels中。