我有一个窗口。
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="GamingClient.UserInterface.MenuPartieRapide"
xmlns:local="clr-namespace:GamingClient.UserInterface">
<local:MapCarrousel />
</Window>
这是MapCarrousel用户控件
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
x:Class="GamingClient.UserInterface.MapCarrousel" d:DesignWidth="1002" d:DesignHeight="122">
</UserControl>
这是userControl背后的代码
public int GetMapId()
{
.... Return some Int
}
我尝试在我的Window
中为我的MapCarrousel添加名称<local:MapCarrousel Name="Test" />
因此我尝试在我的Window.xaml.cs中调用它
void function Test()
{
Test.GetMapId();
}
然后我尝试了以下操作:在用户控件中添加x:name并在我的Window.xaml.cs中的一个函数中调用x:name。
之前有相同的结果。
问题是:如果动态创建用户控件(即新的User-Control())但添加了用户控件,如何在用户控件上调用公共函数,该用户控件是我所在的命名空间/对象的子级把设计师扔了?
答案 0 :(得分:1)
当您尝试在Name
控件上设置MapCarrousel
属性时,您应该遇到如下错误:
错误2因为'MS.Internal.Design.Metadata.ReflectionTypeNode'是在同一个程序集中实现的,所以必须设置x:Name属性而不是MS.Internal.Design.Metadata.ReflectionPropertyNode属性。
这告诉你不能这样做:
<local:MapCarrousel Name="Test" />
正如错误告诉您的那样,您需要这样做:
<local:MapCarrousel x:Name="Test" />
然后你就可以打电话了:
Test.GetMapId();