У меня есть несколько (пока 16) экземпляров пользовательских элементов управления, которые я создал.Каждый из них имеет похожие свойства.Каждому я дал имя: x: Name = "probeX" (где X - целое число).Каждый из этих элементов управления представляет собой электрический зонд.
Я хочу написать метод, который может получить доступ к пользовательскому элементу управления с помощью переданного значения int, к одному из его свойств.
Например: Если методыподпись: void SetMeasuredValueToProbe (int probe_number, int value), затем передача SetMeasuredValueToProbe (3, 22);
установит конкретное свойство probe3 на значение 22.
Я знаю, что могу простосделать длинный случай переключения внутри метода.Но в будущем я хотел бы экспоненциально увеличить количество зондов.Поэтому я хотел бы знать, как правильно назвать и получить доступ к массиву пользовательских элементов управления.
XAML:
<StackPanel
Grid.Column="0">
<uc:ProbeTestControl x:Name="probe1" x:Uid="1" ProbeValue ="1"/>
<uc:ProbeTestControl x:Name="probe2" ProbeValue ="2"/>
<uc:ProbeTestControl x:Name="probe3" ProbeValue ="3"/>
<uc:ProbeTestControl x:Name="probe4" ProbeValue ="4"/>
<uc:ProbeTestControl x:Name="probe5" ProbeValue ="5"/>
<uc:ProbeTestControl x:Name="probe6" ProbeValue ="6"/>
<uc:ProbeTestControl x:Name="probe7" ProbeValue ="7"/>
<uc:ProbeTestControl x:Name="probe8" ProbeValue ="8"/>
</StackPanel>
<StackPanel
Grid.Column="1">
<uc:ProbeTestControl x:Name="probe9" ProbeValue ="9"/>
<uc:ProbeTestControl x:Name="probe10" ProbeValue ="10"/>
<uc:ProbeTestControl x:Name="probe11" ProbeValue ="11"/>
<uc:ProbeTestControl x:Name="probe12" ProbeValue ="12"/>
<uc:ProbeTestControl x:Name="probe13" ProbeValue ="13"/>
<uc:ProbeTestControl x:Name="probe14" ProbeValue ="14"/>
<uc:ProbeTestControl x:Name="probe15" ProbeValue ="15"/>
<uc:ProbeTestControl x:Name="probe16" ProbeValue ="16"/>
</StackPanel>
в классе MainWindow:
private void SetMeasuredValueToProbe(int probe_number, int value )
{
switch (probe_number)
{
case 1:
probe1.MeasuredValueBox = value;
break;
case 2:
probe2.MeasuredValueBox = value;
break;
default:
break;
}
}
Я хочу знать элегантный способ сделать это, не создавая код спагетти.