C# 获取用户变量,设置它';,并将其显示在另一个屏幕上
我是WPF、C#和xaml的新手。我会说我的知识贫乏,但在增长 我有一个非常简单的应用程序。我正在努力实现以下目标: 我有一个文本框,我要求应用程序的用户输入一个电子邮件地址。我想将该变量存储在某个地方,以便稍后将其写入屏幕。因此: 1.获取电子邮件地址(用户点击“下一步”按钮) 2.谢谢,当实用程序完成时,电子邮件将设置为“” 我正在使用与SketchFlow混合。我创建了一个单例类,它允许我存储变量C# 获取用户变量,设置它';,并将其显示在另一个屏幕上,c#,wpf,expression-blend-4,C#,Wpf,Expression Blend 4,我是WPF、C#和xaml的新手。我会说我的知识贫乏,但在增长 我有一个非常简单的应用程序。我正在努力实现以下目标: 我有一个文本框,我要求应用程序的用户输入一个电子邮件地址。我想将该变量存储在某个地方,以便稍后将其写入屏幕。因此: 1.获取电子邮件地址(用户点击“下一步”按钮) 2.谢谢,当实用程序完成时,电子邮件将设置为“” 我正在使用与SketchFlow混合。我创建了一个单例类,它允许我存储变量 namespace Mysillyapplication { public class Ap
namespace Mysillyapplication
{
public class ApplicationParameters
{
private static ApplicationParameters _instance;
private string _emailAddress;
public static ApplicationParameters Instance
{
get
{
if (_instance == null)
{
_instance = new ApplicationParameters();
}
return _instance;
}
}
public string EmailAddress
{
get { return _emailAddress; }
set
{
_emailAddress = value;
}
}
}
获取电子邮件地址的页面的代码:
namespace Mysillyapplication
{
/// <summary>
/// Interaction logic for BasicParameters.xaml
/// </summary>
public partial class BasicParameters : UserControl
{
public BasicParameters()
{
this.InitializeComponent();
}
public string EmailAddress
{
get
{
return ApplicationParameters.Instance.EmailAddress;
}
set
{
ApplicationParameters.Instance.EmailAddress = value;
}
}
}
}
在XAML中:
<TextBlock HorizontalAlignment="Left" Height="25" Margin="10,35,0,0" Style="{DynamicResource BasicTextBlock-Sketch}"
VerticalAlignment="Top" Width="605" >
<Run Text="A log of the sync will be sent to "/>
<Run Text="{Binding EmailAddress, Mode=TwoWay}"/>
<Run Text=". Click Next to begin the sync process."/>
</TextBlock>
是错误的,不起作用
我可能做得不对。任何人都有任何想法,如何轻松地使用户可变的电子邮件地址易于处理。我觉得我想要完成的事情很容易,但我却很难做到
获取一个变量,存储它,在其他页面上访问它。这是因为您没有在第二个页面上设置您的
DataContext
,所以它找不到电子邮件地址
在页面构造函数中,尝试添加:
DataContext = this;
在BasicParameters
构造函数中,添加以下代码:
public BasicParameters()
{
this.InitializeComponent();
this.DataContext = ApplicationParameters.Instance;
}
嗯 我在我的博客文章中写了一些关于这方面的内容
总之,WPF应用程序有两层:UI层和数据层
数据层是DataContext
,绑定在UI层中用于稍后从数据访问数据
编写
时,您告诉WPF查看文本框后面的数据层(DataContext
),并绑定到EmailAddress
属性
DataContext
继承自可视树,因此通常只会看到一次DataContext
集,例如
public SomeConstructor()
{
this.InitializeComponent();
this.DataContext = ApplicationParameters.Instance;
}
需要注意的是,您还可以指定其他绑定属性来访问当前数据上下文
以外的其他位置的值,例如元素名
或源
例如,由于要绑定到一个Singleton
属性,因此可以使用以下语法进行绑定:
Text="{Binding Path=EmailAddress,
Source={x:Static my:ApplicationParameters.Instance}}"
这将设置绑定到singleton对象的源,因此它将绑定到ApplicationParameters.Instance.EmailAddress
要使其工作,还必须指定“我的”命名空间,如下所示:
<Window ... xmlns:my="clr-namespace:MyNamespace" />
但长话短说,绑定无法工作的原因是TextBlock
后面的DataContext
不是ApplicationParameters.Instance
,因此,它找不到要绑定到的EmailAddress
属性:)为什么不能将变量存储在会话
变量中?您可以解释一下会话是什么吗?您可以访问此链接吗
public SomeConstructor()
{
this.InitializeComponent();
this.DataContext = ApplicationParameters.Instance;
}
Text="{Binding Path=EmailAddress,
Source={x:Static my:ApplicationParameters.Instance}}"
<Window ... xmlns:my="clr-namespace:MyNamespace" />