变量更改时,文本框未更新

时间:2018-09-07 18:22:55

标签: c# uwp

当前我的项目中的TextBox字段有问题。

当前,我有一个NavigationViewItem的{​​{1}}。它将打开一个保存文件对话框,并允许用户输入文件名并将其另存为SaveButton_ClickAsync.txt文件。

我有一个Global变量,用于存储另存为字符串的文档的名称和文件位置。然后在整个项目中引用此变量。

一个示例是显示.csvTextBox的{​​{1}}。

在第一次保存后,从设置页面导航并返回到设置页面时,我已经对此进行了更新。保存文档时,它也会更新,然后再次保存,但是如果不离开FileName或第二次保存,则不会在第一次保存时更新。

当我当前在FilePath并第一次保存文档时,它不会更新。我需要这样做

我相信它与以下 SettingsPage 部分中SettingsPage的使用方式有关。我已经包含了所有相关代码,因此您可以了解其工作原理以及程序执行的步骤。

我需要实现的是,当第一次保存文件时,Private void GlobalVariables_PropertyChanged必须触发。我觉得我需要在程序加载时自动将一个字符串加载到_fileName / _filePath中,然后这将允许SettingsPage将其确定为字符串更改。我可能会抓着稻草。关于此的任何想法/想法都将很棒。

GlobalVariebles_PropertyChanged中的PropertyChanged是一个占位符,可让我看到班级何时检测到更改。

此处提供代码:

隐藏代码

Get Set

GlobalVariablesStorage

GlobalVariableStorage

1 个答案:

答案 0 :(得分:0)

这是一个可怕的“ hacky”解决方案,但是我现在所做的是在SettingsPage的情况下,执行了Frame.Naviate来刷新页面。有用。它的毛额。但这有效。仅当您当前在SettingsPage上并保存文件时,此方法才有效

SettingsPage (属性已更改的情况)

private void GlobalVariables_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            switch (e.PropertyName)
            {
                case nameof(GlobalVariables.FilePath):
                    NotifyPropertyChanged(nameof(TextBoxFilePath));
                    Frame.Navigate(this.GetType());
                    break;
                case nameof(GlobalVariables.FileName):
                    NotifyPropertyChanged(nameof(TextBoxFileName));
                    Frame.Navigate(this.GetType());
                    break;
            }
        }