wpf 将所有滑块“ IsEnabledProperty 绑定到数组中

问题描述 投票:0回答:1

首先我是wpf新手和菜鸟程序员...我有一个userControl显示超过100个滑块,我想在数组中管理它们的“IsEnabledProperty”,我正在考虑使用绑定表达式,但不知道如何 这是我的绑定代码

我已经设置了dataContext m_ViewModel。

 public bool[] ControlerEnable
        {
            set => SetProperty(ref _controlerEnable, value);
            get => _controlerEnable;
        }
             List<Slider> _sliders = GetVisualChild<Slider>(this._grid);
            for (int i = 0; i < _sliders.Count; ++i)
            {
                BindingExpression value= _sliders[i].GetBindingExpression(Slider.ValueProperty);
                string sliderValue = value.ParentBinding.Path.Path;
                int nIndex = GetIndex(sliderValue);
                Binding binding = new Binding("m_ViewModel.ControlerEnable[nIndex]");  //question here
                BindingOperations.SetBinding(_sliders[i], Slider.IsEnabledProperty, binding);
                _sliders[i].MouseDoubleClick += Slider_MouseDoubleClick;
            }

我可以在这样的路径中使用索引吗?

arrays wpf binding
1个回答
0
投票

Ohhhhhhhhh...我从 Ghat GPT 得到了一个解决方案,这样写可以工作:

 List<Slider> _sliders = GetVisualChild<Slider>(this._grid);
        for (int i = 0; i < _sliders.Count; ++i)
        {
            BindingExpression value= _sliders[i].GetBindingExpression(Slider.ValueProperty);
            string sliderValue = value.ParentBinding.Path.Path;
            int nIndex = GetIndex(sliderValue);
            Binding binding = new Binding($"ControlerEnable[{nIndex}]");  //question here
            binding.Source = m_ViewModel;
            BindingOperations.SetBinding(_sliders[i], Slider.IsEnabledProperty, binding);
            _sliders[i].MouseDoubleClick += Slider_MouseDoubleClick;
        }
© www.soinside.com 2019 - 2024. All rights reserved.