您刚开始使用Window Phone应用,我不知道如何检索要链接到textblock的数据 我正在使用一个透视应用程序,我需要将它保存到3个文本框并显示在"所有"
MainPage.xaml中
<phone:Pivot Title="MY APPLICATION">
<phone:PivotItem Header="All" Margin="10,0,14,32">
<Canvas>
<TextBlock TextWrapping="Wrap" Text="Admin : " Canvas.Left="57" Canvas.Top="125"/>
<TextBlock TextWrapping="Wrap" Canvas.Left="57" Canvas.Top="201" Width="73">
<Run Text="Name:"/>
<LineBreak/>
<Run/>
</TextBlock>
<Button Content="Retrieve " Canvas.Left="165" Canvas.Top="484" Click="Btn_Retrieve"/>
<TextBlock x:Name="Valuespace" TextWrapping="Wrap" Canvas.Left="152" Canvas.Top="125" Height="110" Width="170"/>
</Canvas>
</phone:PivotItem>
<!--Pivot item two-->
<phone:PivotItem Header="Admin">
<!--Double line list no text wrapping-->
<Canvas>
<TextBox Name="TbAdmin" Height="69" TextWrapping="Wrap" Width="296" Canvas.Top="151" Canvas.Left="78"/>
<Button Content="Save" Canvas.Left="152" Canvas.Top="344" Height="76" Width="143" Click="btn_Save"/>
</Canvas>
</phone:PivotItem>
<phone:PivotItem Header="Name" Margin="14,0,10,28">
<!--Double line list no text wrapping-->
<Canvas>
<TextBox Name="TbName" Height="69" TextWrapping="Wrap" Width="296" Canvas.Top="151" Canvas.Left="78"/>
<Button Content="Save" Height="76" Width="159" Canvas.Left="143" Canvas.Top="290" Click="btn_Save"/>
</Canvas>
</phone:PivotItem>
<phone:PivotItem Header="Update">
<!--Double line list no text wrapping-->
<Canvas>
<TextBox Name="TbUpdate" Height="69" TextWrapping="Wrap" Width="296" Canvas.Top="151" Canvas.Left="78"/>
<Button Content="Save" Canvas.Left="161" Canvas.Top="325" Height="91" Width="140" Click="btn_Save"/>
</Canvas>
</phone:PivotItem>
</phone:Pivot>
</Grid>
MainPage.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using MockTest.Resources;
using System.IO;
using System.Threading.Tasks;
using Windows.Storage;
namespace MockTest
{
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
// Set the data context of the listbox control to the sample data
DataContext = App.ViewModel;
// Sample code to localize the ApplicationBar
//BuildLocalizedApplicationBar();
}
// Load data for the ViewModel Items
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (!App.ViewModel.IsDataLoaded)
{
App.ViewModel.LoadData();
}
}
async void btn_Save(object sender, RoutedEventArgs e)
{
var folder = ApplicationData.Current.LocalFolder;
var file = await folder.CreateFileAsync("Store.txt",
CreationCollisionOption.ReplaceExisting);
using (var stream = await file.OpenStreamForWriteAsync())
{
var writer = new StreamWriter(stream);
await writer.WriteLineAsync(TbAdmin.Text);
await writer.WriteLineAsync(TbName.Text);
await writer.WriteLineAsync(TbUpdate.Text);
await writer.FlushAsync();
writer.Close();
}
}
async void Btn_Retrieve(object sender, RoutedEventArgs e)
{
var folder = ApplicationData.Current.LocalFolder;
using (var Stream = await folder.OpenStreamForReadAsync("Store.txt"))
{
var reader = new StreamReader(Stream);
var result = await reader.ReadToEndAsync();
MessageBox.Show(result);
}
}
我能够在MessageBox中显示详细信息,但我希望它显示在与admin和Name匹配但不显示更新的文本块中。无论如何都要这样做,因为我真的不知道在异步中写什么。
答案 0 :(得分:1)
当您去检索数据时,您可能会使用当前代码看到这样的内容。
“管理员\ r \ n名称\ r \ nUpdate \ r \ n” 个
当您将数据保存在三行中时,这些行是逐行存储的。你可以做一些事情,比如将单个长字符串分成单独的行。
var splitBy = new[] { "\r\n" };
var splitResult = result.Split(splitBy, StringSplitOptions.RemoveEmptyEntries);
然后,当您以三行为一组输入数据时,每个文本框都有一行。您只需循环浏览 splitResults 并一次抓取三个项目。
然后您可以使用某些内容......
TextBlock.Text = string1;
我会立即将重点放在异步上,并首先将数据输入 TextBlock 。
我还看到你正在添加一个换行符并在文本块中使用run。也许现在可以远离它,并添加另一个文本块,将保留返回的管理员&amp;名称。因为这将导致您使用内联,这是另一种学习曲线。
所以在 TextBlock 下你有这样的东西......
<TextBlock TextWrapping="Wrap" Text="Admin : " Canvas.Left="57" Canvas.Top="125"/>
在其下方放置另一个文本块,并将其命名为您想要的内容。然后在后面的代码中,您可以通过它的名称访问 TextBlock 并直接设置它的文本。
我还要从字符串拆分中删除空条目,如果您输入空字符串等,则需要考虑这些条目。