首先我是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;
}
我可以在这样的路径中使用索引吗?
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;
}