在TextBox中显示变量

时间:2018-09-07 09:23:04

标签: c# xaml uwp uwp-xaml

我难以在文本框中显示变量。

主要尝试了解Bindings在XAML中的工作方式。

我需要尝试在相关字段中显示变量TextBoxFileNameTextBoxFilePath。变量获取的信息存储在单独的GlobalVariableStorage类中。我不希望TextBox字段可编辑,因此请将它们设置为只读。我根本不希望用户能够在这些字段中编辑数据。如果您有其他显示方法的想法,请随时提出建议。

XAML

<Page.Resources>
    <ResourceDictionary>
        <ResourceDictionary.ThemeDictionaries>
            <!-- Placeholder for the theme dictionary -->
        </ResourceDictionary.ThemeDictionaries>
    </ResourceDictionary>
</Page.Resources>

<Frame Background="{StaticResource CustomAcrylicDarkBackground}">
    <StackPanel>
        <TextBox Width="500" Header="File Name" PlaceholderText="Name Of File" IsReadOnly="True" Foreground="White" Text=""/>
        <TextBox Width="500" Header="File Location" PlaceholderText="File Location" IsReadOnly="True" Foreground="White" Text=""/>
    </StackPanel>
</Frame>

代码隐藏

public sealed partial class SettingsPage : Page
    {
    public SettingsPage()
    {
        this.InitializeComponent();
    }

    public class TextBoxDisplay
    {
        public string TextBoxFileName = GlobalVariables.FileName;
        public string TextBoxFilePath = GlobalVariables.FilePath;           

    }
}

2 个答案:

答案 0 :(得分:2)

由于方法错误,您遇到了困难。
例如,您没有遵循MVVM模式。另外,您无需将IsReadOnly设置为true,只需使用单向绑定即可。

<TextBox Text="{Binding TextBoxFileName,Mode=OneWay}"/>

要正确理解和实现MVVM,建议您阅读以下链接:MVVM for WPF。尽管它是用于WPF的,但是UWP与WPF非常相似,您不会有任何问题。

如果您想学习MVVM,我可以为您提供帮助。给我发送有关Discord的消息:Red Wei#2396

玩得开心。

答案 1 :(得分:1)

向您的SettingsPage类添加两个只读属性:

public sealed partial class SettingsPage : Page
{
    public SettingsPage()
    {
        this.InitializeComponent();
    }

    public string TextBoxFileName => GlobalVariables.FileName;
    public string TextBoxFilePath => GlobalVariables.FilePath;
}

...并绑定到这些:

<TextBox Header="File Name" ... Text="{x:Bind TextBoxFileName}"/>
<TextBox Header="File Name" ... Text="{x:Bind TextBoxFilePath}"/>