c# - 我如何进行异步数字排序应用程序 WPF
问题描述
我需要制作一个应用程序,从用户选择的文件中加载数字并在屏幕上显示排序结果。但我有几个问题,最大的是排序,我的意思是它必须是异步的,因为“它对 UI 更好”而且我不确定我在剩下的工作中做得很好,特别是我正在考虑将所有东西连接在一起。请帮忙
视图模型
sealed class numbersViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChange(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
private numbersModel user;
public string NumbersString
{
get { return user.NumbersString + user.NumbersString; }
set
{
user.NumbersString = value;
OnPropertyChange("numbers1");
OnPropertyChange("numbers2");
OnPropertyChange("numbers3");
OnPropertyChange("numbers4");
OnPropertyChange("numbers5");
}
}
public List<string> NumbersList
{
get { return user.NumbersList = stringToList(user.NumbersString); }
}
public string SortedNumbers
{
get { return sortingNumbers(user.NumbersList); }
}
public string sortingNumbers(List<string> l)
{
string sorted = "";
l.Sort();
foreach (string g in l)
{
sorted = sorted + g + " , ";
}
return sorted;
}
List<string> stringToList(string ex)
{
string number = "";
List<string> numberList = new List<string>();
for (int i = 0; i < ex.Length; i++)
{
if ((Char.IsDigit(ex[i])) || (ex[i] == '.') || ex[i] == ',')
{
if ((Char.IsDigit(ex[i])) || (ex[i] == '.'))
{
number = number + ex[i];
}
else
{
number = number + ".";
}
if (i == ex.Length - 1)
{
numberList.Add(number);
number = "";
}
}
else
{
if (i == 0) { }
else
{
if (Char.IsDigit(ex[i - 1]))
{
numberList.Add(number);
number = "";
}
}
}
}
return numberList;
}
模型
sealed class numbersModel : INotifyPropertyChanged
{
public string NumbersString { get; set; }
public List<string> NumbersList { get; set; }
public string SortedNumbersList { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
XAML
我有 10 个这样的按钮
<Button Name="_1btn1" Background="Pink" Grid.Column="0"
BorderBrush="Black" BorderThickness="1"
Click="btn_Click" ClickMode="Press"
Width="120" Height="30" >
Load File
</Button>
和 10 个像这样的文本块,它显示文件中的文本但没有排序我必须不对单个文件进行排序。我认为属性更改方法有误,但我不知道
<ScrollViewer
Width="500"
Height="50"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Disabled">
<Grid>
<TextBlock x:Name="numbers1" Text="{Binding null, UpdateSourceTrigger=PropertyChanged}"
FontSize="15"
FontWeight="Bold"
Width="Auto"
Background="AntiqueWhite"/>
</Grid>
</ScrollViewer>
这是我必须显示结果的主要文本块
TextBlock
Height="400" Background="Aqua" FontSize="20" TextWrapping="Wrap" Text="{Binding SortedNumbers}">
</TextBlock>
解决方案
推荐阅读
- c# - 从 Xamarin 中的文件读取
- python - 如何使用 Python 3 在 txt 文件中打印变量
- git - git log - 排除给定祖先/基地的孩子/后代
- android - 无法使用“FrameLayout”,错误:“必须声明元素 FrameLayout”[Android Studio]
- flutter - 未来的建设者没有解雇
- git - 如何将单个文件从“今天”反向移植到“很久以前”?
- php - 使用 Composer create-project 安装 Laravel - 如何使用最新版本?
- sql - sql限制记录分组
- ios - 如何使用自定义 UICollectionReusableView 作为集合视图的部分标题?
- java - 使用Chaquopy在android studio上运行python脚本无法打开相机