【发布时间】:2017-06-22 20:22:51
【问题描述】:
我是 UWP 新手。
我创建了一个带有 MainPage 和 UserControl 的应用程序。
我在那个用户控件中有一个文本框,我想从我的主页访问它的数据。
有人可以建议一种方法吗?
谢谢
【问题讨论】:
我是 UWP 新手。
我创建了一个带有 MainPage 和 UserControl 的应用程序。
我在那个用户控件中有一个文本框,我想从我的主页访问它的数据。
有人可以建议一种方法吗?
谢谢
【问题讨论】:
虽然@Peter 有一个很好的答案,但我认为您也可以使用FieldModifier。
我的 UserControl 是 Averieli,我的 xaml 是:
<UserControl
x:Class="Avalonia.Averieli"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Avalonia"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400">
<Grid>
<TextBox x:Name="TextBox" x:FieldModifier="public"></TextBox>
</Grid>
</UserControl>
您可以看到我在TextBox中添加了x:FieldModifier="public",可以使其可以在MainPage中使用。
我在 MainPage 中使用 UserControl。
<local:Averieli x:Name="Averieli"></local:Averieli>
我也可以在后面的代码中使用TextBox。
public MainPage()
{
InitializeComponent();
Averieli.TextBox.Text = "I can use it";
}
【讨论】:
在用户控件的构造函数中,初始化一个UserControl类的静态全局实例
public UserControl()
{
//Initialise control
}
public static UserControl UserControlInstance
{
get
{
return m_UserControlInstance ?? new UserControl();
}
}
private static UserControl m_UserControlInstance;
然后只需通过实例访问 UserControl 的属性
string x = UserControl.UserControlInstance.TextBox.Text;
顺便说一句,这被称为 singelton,以防你想查一下!
【讨论】: