0
나는 윈도우 폰 8.1 app을 만들고있다. 나는 listview에 (서) 클릭 한/두드린 항목을 저장하려고 노력하고있다. 그러나 나는 어떻게하는지 모른다.windows phone 8.1 history
강령 메신저 시도 할 일 :
List<string> History = new List<string>();
private async Task SaveTextFile(string str)
{
StorageFolder Folder1 = ApplicationData.Current.LocalFolder;
StorageFolder Folder2 = await Folder1.CreateFolderAsync("Sample Save", CreationCollisionOption.OpenIfExists);
StorageFile File1 = await Folder2.CreateFileAsync("History.txt", CreationCollisionOption.ReplaceExisting);
byte[] data = Encoding.Unicode.GetBytes(str);
using (var f = await File1.OpenStreamForWriteAsync())
{
await f.WriteAsync(data, 0, data.Length);
}
}
private async Task<string> GetTextFile()
{
StorageFolder Folder1 = ApplicationData.Current.LocalFolder;
StorageFolder Folder2 = await Folder1.CreateFolderAsync("Sample Save", CreationCollisionOption.OpenIfExists);
try
{
StorageFile File1 = await Folder2.GetFileAsync("History.txt");
return (await FileIO.ReadTextAsync(File1));
}
catch (Exception)
{
return "";
}
}
private async void Refresh_It()
{
try
{
string Str1 = await GetTextFile();
TextBox1.Text = Str1;
string[] Str2 = Str1.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < Str2.Count(); i++)
{
History.Add(Str2[i]);
}
for (int i = 0; i < ListView1.Items.Count; i++)
{
if (History.IndexOf(ListView1.Items[i].ToString()) != -1)
{
ListView1.Items[i] = ListView1.Items[i].ToString() + " Clicked";
}
}
}
catch (Exception ex)
{
Label1.Text = ex.Message;
}
}
private async void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
{
for (int i = 0; i < 40; i++)
{
ListView1.Items.Add(i.ToString());
}
Refresh_It();
}
private async void ListView1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
string selecteds = e.AddedItems.First().ToString();
History.Add(selecteds);
string str1 = "";
for (int i = 0; i < History.Count; i++)
{
str1 += History[i];
if (i != (History.Count -1)) { str1 += "/"; }
}
await SaveTextFile(str1);
History.Clear();
}
catch (Exception ex)
{
Label1.Text = ex.Message;
}
Refresh_It();
}
XML :
<Grid x:Name="LayoutRoot" Loaded="LayoutRoot_Loaded">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ListView x:Name="ListView1" Grid.Row="1" Background="White" Foreground="Black" SelectionChanged="ListView1_SelectionChanged"/>
<ScrollViewer Height="Auto" Grid.Row="0">
<TextBlock x:Name="Label1"/>
</ScrollViewer>
</Grid>
내 코드 메신저에서
이 역사 "에 넣어하는 히스토리 파일의 텍스트와 분할을 얻기 위해 노력 (A 문자열 목록) ". 선택이 변경되면 항상 "History (list)"에 문자열을 추가합니다. 그러나 어떤 이유로 내 코드가 작동하지 않는 문제는 목록 항목이 "History (문자열 목록)"에 있는지 확인하고 나누는 것입니다.
내 응용 프로그램에 "24 Clicked"를 추가하려면 History에 "24"가 있으면 ListView를 클릭하십시오. pageLoad에 기록을로드하고 항목을 클릭하면
도움말. 나쁜 영어에 대해 유감스럽게 생각합니다.