0

基本上我正在制作这个简单的笔记应用程序,并且我有一个列表框。当用户通过单击保存按钮添加注释时,该注释将保存为 .txt 文件并在列表框中显示该注释。因此,现在如果用户想要进行更改等,他们只需单击列表框项目,该项目将是他们保存的笔记的名称。我想要做的基本上是当用户单击保存时,它会保存并在列表框中显示注释的名称,因此例如注释名称是 test.txt 然后在列表框中出现 test.txt。就在出现在列表框中的项目名称下,我如何添加一种子项目?例如像 wp7 中的邮件。它具有电子邮件的主题和显示前 12 个左右单词的子项。我怎样才能用我的应用程序做到这一点?到目前为止,我只得到了注释名称。我希望它在项目下显示名称和消息的前 14 个单词。

到目前为止我的代码:

这基本上将 myNote 文件夹中的项目添加到列表框中,以便显示保存的笔记。

Dim myIsolatedStorage As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication()
    myIsolatedStorage.CreateDirectory("myNote")
    Dim directory As String = "./myNote/*.*"
    Dim filenames As String() = myIsolatedStorage.GetFileNames(directory)
    ListBox1.ItemsSource = filenames

这是列表框的 xml

<ListBox HorizontalAlignment="Left" Margin="8,8,0,8" x:Name="ListBox1" Width="440" SelectionMode="Single" FontSize="32" FontFamily="Segoe WP SemiLight" RenderTransformOrigin="0.5,0.5" Grid.Row="2" Style="{StaticResource ListBoxStyle1}" Foreground="White" BorderBrush="#00000000" ItemContainerStyle="{StaticResource ListBoxItemStyle1}" ItemsPanel="{StaticResource ItemsPanelTemplate1}" />

任何人?谢谢!

4

1 回答 1

0

要在每个列表框项中的文件标题下方添加一些文本,您需要为您的列表框定义一个新的ItemTemplate。通过定义您自己的ItemTemplate,您将能够准确选择每个列表框项目的显示方式。

这是提供的一个小示例Listbox,模板(包含在该DataTemplate部分中的所有内容)非常简单,您可以通过更改颜色、字体等来自定义它...

在您的 xaml 页面中:

        <ListBox HorizontalAlignment="Left" Margin="8,8,0,8" x:Name="ListBox1"
                 Width="440" SelectionMode="Single"
                 FontSize="32" FontFamily="Segoe WP SemiLight"
                 RenderTransformOrigin="0.5,0.5" Grid.Row="2"
                 Style="{StaticResource ListBoxStyle1}"
                 Foreground="White" BorderBrush="#00000000"
                 ItemContainerStyle="{StaticResource ListBoxItemStyle1}"
                 ItemsPanel="{StaticResource ItemsPanelTemplate1}" >
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Vertical">
                        <TextBlock Text="{Binding FileName}" FontWeight="Bold"></TextBlock>
                        <TextBlock Text="{Binding Content}"></TextBlock>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

然后你需要分配ItemsSource一个新类型的List. 您必须提供 a of a 之类的东西,而不是仅仅分配一个文件名List(即 a Listof ):StringList

Public Class NewListItem
    Public Property FileName() As String
        Get
            Return m_FileName
        End Get
        Set
            m_FileName = Value
        End Set
    End Property
    Private m_FileName As String
    Public Property Content() As String
        Get
            Return m_Content
        End Get
        Set
            m_Content = Value
        End Set
    End Property
    Private m_Content As String
End Class

所以基本上,它只是一个包含 2 个属性的数据结构:FileNameContent.

最后,您需要List通过遍历文件名List并用适当的值填充新属性来构建新类型(当然,这只是伪代码):

Dim newList As New List(Of NewListItem)()
For Each file As var In filenames
    Dim item As New NewFileItem()
    item = file
    ' open the file the way you want
    ' extract the 14 first characters the way you want
    Dim content As String = InlineAssignHelper(item.Content, content)
    newList.Add(item)
Next
ListBox1.ItemsSource = filenames
于 2013-10-20T13:37:13.997 回答