我正在编写一个应用程序,我已经创建了一些自己的控件。其中一个控件正在根据用户的意愿动态添加到ListBox中。
此控件包含4个TextBox,每个TextBox都会在用户输入时从用户处获取数据。但我无法开展工作的是如何拯救他们。我试图将列表保存为普通列表 - 这不起作用。看我的代码:
声明:
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。
请帮助!:)
答案 0 :(得分:0)
保存控件的内容,而不是控件。
IsolatedStorageSettings.ApplicationSettings
可以保存您自己对象的列表,但需要额外的代码。这是good example。