C# 如何从xml加载值并在所有页面中使用它们?
所以,我正在开发一个小的WPF应用程序,主要是为了学习。 我的WPF应用程序中有多个页面,每个页面上都有滑块、复选框等。现在,我要做的是将controlelements中的所有值保存在一个xml文件中。当我重新启动应用程序时,它应该读取xml并使用其中存储的值C# 如何从xml加载值并在所有页面中使用它们?,c#,xml,wpf,C#,Xml,Wpf,所以,我正在开发一个小的WPF应用程序,主要是为了学习。 我的WPF应用程序中有多个页面,每个页面上都有滑块、复选框等。现在,我要做的是将controlelements中的所有值保存在一个xml文件中。当我重新启动应用程序时,它应该读取xml并使用其中存储的值 我知道如何在一个简单的windowsforms中完成它,但我无法让它与WPF一起工作。欢迎使用StackOverflow:D 这里有一个简单的例子,使用: 我将制作一个小窗口,显示一些设置 using System.IO; using S
我知道如何在一个简单的windowsforms中完成它,但我无法让它与WPF一起工作。欢迎使用StackOverflow:D 这里有一个简单的例子,使用: 我将制作一个小窗口,显示一些设置
using System.IO;
using System.Windows;
using System.Xml.Serialization;
namespace WpfApplication1
{
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
Loaded += MainWindow_Loaded;
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
// Create XML sample data
var settings = new MySettings {Setting1 = "hello !", Setting2 = "hi !"};
var serializer1 = new XmlSerializer(typeof (MySettings));
string xml;
using (TextWriter textWriter = new StringWriter())
{
serializer1.Serialize(textWriter, settings);
xml = textWriter.ToString();
}
// Deserialize that sample data to an object
var serializer2 = new XmlSerializer(typeof (MySettings));
MySettings deserialize;
using (var stringReader = new StringReader(xml))
{
deserialize = serializer2.Deserialize(stringReader) as MySettings;
}
// Use deserialized data as our context
if (deserialize != null)
{
DataContext = deserialize;
}
}
}
public class MySettings
{
public string Setting1 { get; set; }
public string Setting2 { get; set; }
}
}
XAML部分(在我看来,您最感兴趣的部分):
设置1
设置2
因此:
<?xml version="1.0" encoding="utf-16"?>
<MySettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Setting1>hello !</Setting1>
<Setting2>hi !</Setting2>
</MySettings>
你好
你好
我们最终得出以下结论:
是的,很好。但是现在让我们假设我有另一个窗口MainWindow2。在该窗口中,我想加载值,例如“hello!”,将其更改为“再见”,然后在MainWindow2中有一个按钮保存它,以便MainWindow显示“再见”。这是我在atm上遇到的关键问题,我不知道如何将它从MainWindow2“发送回”到XML。要做到这一点,请在App.xaml.cs中创建一个静态“MySettings”属性,确保它实现INotifyPropertyChanged,然后在两个窗口上绑定到此属性。对任一窗口所做的任何更改都将被传播。
<?xml version="1.0" encoding="utf-16"?>
<MySettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Setting1>hello !</Setting1>
<Setting2>hi !</Setting2>
</MySettings>