0
我正在编写一个应用程序,在其中创建了我自己的一些控件。根据用户的意愿动态添加其中一个控件。在IsolatedStorage列表中保存控件(UIElements)
此控件包含4个文本框,每个文本框在用户输入时都会从用户那里获取数据。但是我无法工作的事情是如何拯救他们。我试图将列表保存为普通列表 - 这不起作用。见我的代码:
声明:
List<scheduleControl> scheduleList;
IsolatedStorageSettings settings;
的设置初始化:
settings = IsolatedStorageSettings.ApplicationSettings;
动态地将控件添加到列表:
private void addscheduleitemButton_Click(object sender, RoutedEventArgs e)
{
// addscheduleitemButton was tapped, add an item to the list holding the information the user entered
scheduleControl control = new scheduleControl();
control.fromTextBlock.Text = "From: " + fromTextBox.Text.ToString();
control.toTextBlock.Text = "To: " + toTextBox.Text.ToString();
control.detailsTextBlock.Text = "Details: " + detailsTextBox.Text.ToString();
control.dateTextBlock.Text = "Date: " + dateTextBox.Text.ToString();
// Create Thickness
Thickness stackpanelThickness = new Thickness();
stackpanelThickness.Bottom = 20;
stackpanelThickness.Top = 0;
stackpanelThickness.Right = 0;
stackpanelThickness.Left = 0;
// Assign the thickness
control.Margin = stackpanelThickness;
// Add the control
scheduleListBox.Items.Add(control);
scheduleList.Add(control);
}
控制XAML:
<UserControl x:Class="App_Name.scheduleControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}" Height="132" Width="359">
<Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
<TextBlock x:Name="dateTextBlock" HorizontalAlignment="Left" Margin="10,0,0,0" TextWrapping="Wrap" Text="Date" VerticalAlignment="Top" FontSize="22" Height="32" Width="152"/>
<TextBlock x:Name="fromTextBlock" HorizontalAlignment="Left" Margin="10,47,0,0" TextWrapping="Wrap" Text="From:" VerticalAlignment="Top" FontSize="22" Height="28" Width="152"/>
<TextBlock x:Name="toTextBlock" HorizontalAlignment="Left" Margin="10,93,0,0" TextWrapping="Wrap" Text="To:" VerticalAlignment="Top" FontSize="22" Width="152"/>
<TextBlock x:Name="detailsTextBlock" Margin="167,0,0,0" TextWrapping="Wrap" Text="Details:" FontSize="22" HorizontalAlignment="Left" Width="192"/>
</Grid>
</UserControl>
完成后保存列表:
// Save the scheduleList
settings.Add(projectnameTextBox.Text.ToString() + "-scheduleList", scheduleList);
settings.Save();
我得到一个InvalidDataControlException,这是认为这是由于这一点,因为日志说正在连载一些有关的UIElement。
请帮帮忙!:)
嗯,好的 - 这会增加一点点工作 - 对此最好的方法是什么? – Erik
将控件存储在类中,并将它们(类)序列化为文件。您可以使用[XMLserializer](http://msdn.microsoft.com/zh-cn/library/system.xml.serialization.xmlserializer(v = vs.110).aspx)执行此任务。如果要将列表保存到IsolatedStorage中,您可以[尝试此代码](http://stackoverflow.com/questions/5073925/problem-storing-a-list-of-objects-in-isolated-storage)。我编辑了原始答案,因为isolatedstorage.settings可以保存对象列表,但不能直接。 – crea7or