如何解决如何进行WPF异步数字排序应用
我需要制作一个可以从用户选择的文件中加载数字并在屏幕上显示排序结果的应用。但是我没有什么问题,最大的问题是排序,我的意思是它必须是异步的,因为“这对UI更好”,而且我不确定我的工作是否做得很好,尤其是我正在考虑将所有内容连接在一起时。请帮助
ViewModel
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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。