我的应用程序(测试应用程序)做了什么:
它是动态创建UI的WPF应用程序。
首先它加载一个窗口,主窗口只有一个按钮,添加。
然后用户可以添加一个组件,即Usercontrol。每次创建添加按钮时,寡妇都会添加一个新组件,每个组件都有一个删除按钮。
我想做什么:
用户添加和删除任意数量的用户控制组件后,他可以关闭程序,然后在再次加载程序(重新启动)后,必须加载以前添加的组件并能够继续添加/删除。
我该如何解决这个问题?有没有办法让按钮可以点击或这种方法是只读的?如果是这样如何实现这一目标?
我检查了保存设置方法,但由于动态添加了UI元素,因此无法实现。 (右?)
添加的组件
namespace WpfTest
{
/// <summary>
/// Interaction logic for UCTest.xaml
/// </summary>
public partial class UCTest : UserControl
{
public UCTest()
{
InitializeComponent();
}
private void button_Click(object sender, RoutedEventArgs e)
{
removethis((StackPanel)this.Parent);
}
void removethis(StackPanel g) {
g.Children.Remove(this);
}
public string setText
{
get
{
return this.textBlock.Text;
}
set
{
this.textBlock.Text = value;
}
}
}
}
主窗口
namespace WpfTest
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
ObservableCollection<UCTest> oc;
public MainWindow()
{
InitializeComponent();
Loaded += new RoutedEventHandler(MainWindow_Loaded);
Closing += new CancelEventHandler(MainWindow_Closing);
}
int cnt;
private void button_Click(object sender, RoutedEventArgs e)
{
sub1.Children.Add(new UCTest() { setText=Convert.ToString(cnt++)});
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
LoadExternalXaml();
}
void MainWindow_Closing(object sender, CancelEventArgs e)
{
SaveExternalXaml();
}
public void LoadExternalXaml()
{
if (File.Exists(@"D:\Test.xaml"))
{
using (FileStream stream = new FileStream(@"D:\Test.xaml", FileMode.Open))
{
this.Content = XamlReader.Load(stream);
}
}
}
public void SaveExternalXaml()
{
using (FileStream stream = new FileStream(@"D:\Test.xaml", FileMode.Create))
{
XamlWriter.Save(this.Content, stream);
}
}
}
}