首页 > 解决方案 > 我如何进行异步数字排序应用程序 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#wpfxaml

解决方案


推荐阅读