Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取用户变量,设置它';,并将其显示在另一个屏幕上_C#_Wpf_Expression Blend 4 - Fatal编程技术网

C# 获取用户变量,设置它';,并将其显示在另一个屏幕上

C# 获取用户变量,设置它';,并将其显示在另一个屏幕上,c#,wpf,expression-blend-4,C#,Wpf,Expression Blend 4,我是WPF、C#和xaml的新手。我会说我的知识贫乏,但在增长 我有一个非常简单的应用程序。我正在努力实现以下目标: 我有一个文本框,我要求应用程序的用户输入一个电子邮件地址。我想将该变量存储在某个地方,以便稍后将其写入屏幕。因此: 1.获取电子邮件地址(用户点击“下一步”按钮) 2.谢谢,当实用程序完成时,电子邮件将设置为“” 我正在使用与SketchFlow混合。我创建了一个单例类,它允许我存储变量 namespace Mysillyapplication { public class Ap

我是WPF、C#和xaml的新手。我会说我的知识贫乏,但在增长

我有一个非常简单的应用程序。我正在努力实现以下目标:

我有一个文本框,我要求应用程序的用户输入一个电子邮件地址。我想将该变量存储在某个地方,以便稍后将其写入屏幕。因此: 1.获取电子邮件地址(用户点击“下一步”按钮) 2.谢谢,当实用程序完成时,电子邮件将设置为“”

我正在使用与SketchFlow混合。我创建了一个单例类,它允许我存储变量

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" />