Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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# 绑定文本框';将文本转换为类';WPF中的属性和应用程序设置_C#_Wpf_.net Core_Data Binding - Fatal编程技术网

C# 绑定文本框';将文本转换为类';WPF中的属性和应用程序设置

C# 绑定文本框';将文本转换为类';WPF中的属性和应用程序设置,c#,wpf,.net-core,data-binding,C#,Wpf,.net Core,Data Binding,我刚刚开始使用WPF(来自Windows窗体),我想将文本框的文本绑定到类的属性,并且我希望这也与应用程序的设置同步(Properties.settings.Default)。有没有可能在没有代码隐藏的情况下实现这一点?目前我有: <TextBox x:Name="HostnameTextBox" Text="{Binding Path=ConnectModel.Hostname, Mode=TwoWay}" /> 它成功地绑定到类的属

我刚刚开始使用WPF(来自Windows窗体),我想将文本框的文本绑定到类的属性,并且我希望这也与应用程序的设置同步(
Properties.settings.Default
)。有没有可能在没有代码隐藏的情况下实现这一点?目前我有:

 <TextBox x:Name="HostnameTextBox" Text="{Binding Path=ConnectModel.Hostname, Mode=TwoWay}" />

它成功地绑定到类的属性主机名。我偶然发现了
多绑定
,但我知道这不是我想在本例中使用的,对吗?如何使
Properties.Settings.Default.Hostname
属性与TextBox和类的属性同步,即当TextBox.Text发生更改时,用户定义类的属性和设置属性都将更新?是否只能在XAML文件中执行此操作

有没有可能在没有代码隐藏的情况下实现这一点

因为
属性.Settings.Default
在Xaml中没有以任何形式表示;没有链式绑定,尤其是只使用一个绑定


我认为有三种方法,一种是错误的,两种是正确的

  • (错误)创建一个转换器,当它获取一个值时,该转换器会更改其他属性
  • 主类应该实现
    INotifyPropertyChanged
    ,并且可能存在订阅属性更改事件并相应更新设置的代码
  • 在属性的setter中,在属性更改时更改设置

  • 坦白地说,我会选择#3,因为它是最简单的工作。

    错了,您希望使用多值转换器的多绑定。但是,这完全取决于“synchronized”在这里的实际含义。您基本上希望在
    文本框中更新属性值时,也更新应用程序设置中的属性值,我想在应用程序设置中更新属性值,并在文本框的值发生更改时更新用户定义类的属性。这显然是错误的。您可以直接绑定,比如
    {Binding Path=(属性:Settings.Default).MySetting}
    @Clemens,这就是所谓的答案…发布它。答案是什么?这个问题完全不清楚。这不是关于如何绑定到设置。默认设置,而是(可能)如何同时绑定到多个属性。是的,设置属性不在Xaml上。这就是我的答案。我提供了三种解决方法。如果有办法更改绑定中的替代值;我洗耳恭听。“设置属性不在Xaml上”-这是什么意思?如我前面的评论所示,您当然可以直接在XAML中绑定到这些属性。