为了账号安全,请及时绑定邮箱和手机立即绑定

选中数组中的复选框时更新标签

选中数组中的复选框时更新标签

C#
繁花如伊 2022-12-24 10:55:39
我正在尝试实现一种快速排序算法来对浮点数组进行排序。每当我引用数组中的索引时,我都会收到此错误:无法将类型“float”隐式转换为“int”。存在显式转换(您是否缺少转换)?这是算法:class Quicksort{    public static void Sort(float[] numbers, int left, int right)    {        float i = Convert.ToSingle(left);        float j = Convert.ToSingle(right);        var pivot = numbers[(left + right) / 2];        while (i <= j)        {            while (numbers[i] < pivot) //ERROR HERE                i++;            while (numbers[j] > pivot) //ERROR HERE                j--;            if (i <= j)            {                float tmp = numbers[i]; //ERROR HERE                numbers[i] = numbers[j]; //ERROR HERE                numbers[j] = tmp; //ERROR HERE                i++;                j--;            }        }        if (left < j)            Sort(numbers, left, j);        if (i < right)            Sort(numbers, i, right);    }}numbers[i]每当我使用或时出现转换错误numbers[j]我将如何解决这个问题?
查看完整描述

1 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

我刚刚为你的场景写了一个例子,看看我认为它会有所帮助


Xaml


  <StackPanel Grid.Row="0" Grid.Column="1">

        <ItemsControl ItemsSource="{Binding Path=CBItems}">

            <ItemsControl.ItemsPanel>

                <ItemsPanelTemplate>

                    <StackPanel Orientation="Horizontal"/>

                </ItemsPanelTemplate>

            </ItemsControl.ItemsPanel>

            <ItemsControl.ItemTemplate>

                <DataTemplate>

                    <CheckBox IsChecked="{Binding Path=CheckBoxChecked, Mode=TwoWay}" Command="{Binding Path=DataContext.CheckBoxChanged, RelativeSource={RelativeSource AncestorType=ItemsControl}}"/>

                </DataTemplate>

            </ItemsControl.ItemTemplate>

        </ItemsControl>

        <Label Content="{Binding LabelContent}"></Label>

    </StackPanel>

Ctro(设置数据上下文)


 public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

            MainWindowVM DC = new MainWindowVM();

            DC.Init();

            this.DataContext = DC;

        }

    }

继电器命令和模型类


 class MainWindowVM : INotifyPropertyChanged

    {

        public MainWindowVM()

        {


            CheckBoxChanged = new RelayCommand(CheckBoxChangedMethod);


        }


        private string labelContent="Not Yet Checked";


        public string LabelContent

        {

            get { return labelContent; }

            set { labelContent = value; OnPropertyChanged(new PropertyChangedEventArgs("LabelContent")); }

        }



        public void Init()

        {

            try

            {

                CBItems = new ObservableCollection<ex>();

                for (int i = 985; i <= 1030; i++)

                    CBItems.Add(new ex { CheckBoxChecked = true });

            }

            catch (Exception ex)

            {


            }

        }


        public ICommand CheckBoxChanged { get; set; }




        private ObservableCollection<ex> _CBItems;

        public ObservableCollection<ex> CBItems

        {

            get { return _CBItems; }

            set

            {

                _CBItems = value;

                OnPropertyChanged(new PropertyChangedEventArgs("CBItems"));

            }

        }


        public event PropertyChangedEventHandler PropertyChanged;

        public void OnPropertyChanged(PropertyChangedEventArgs e)

        {

            if (PropertyChanged != null)

            {

                PropertyChanged(this, e);

            }

        }



        public void CheckBoxChangedMethod(object obj)

        {

            LabelContent = "You have Clicked the checkbox";

        }


    }


    public class RelayCommand : ICommand

    {

        private Action<object> execute;

        private Func<object, bool> canExecute;


        public event EventHandler CanExecuteChanged

        {

            add

            {

                CommandManager.RequerySuggested += value;


            }

            remove { CommandManager.RequerySuggested -= value; }

        }


        public RelayCommand(Action<object> execute, Func<object, bool> canExecute = null)

        {

            this.execute = execute;

            this.canExecute = canExecute;

        }



        public bool CanExecute(object parameter)

        {

            //return this.canExecute == null || this.canExecute(parameter);

            return true;

        }


        public void Execute(object parameter)

        {

            this.execute(parameter);

        }


        public RelayCommand(Action<object> execute)

        {

            this.execute = execute;


        }



    }


    public class ex

    {

        private bool _checkBoxChecked;


        public bool CheckBoxChecked

        {

            get { return _checkBoxChecked; }

            set { _checkBoxChecked = value; }

        }


    }



查看完整回答
反对 回复 2022-12-24
  • 1 回答
  • 0 关注
  • 56 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信