-1

Can i write this code shorter? with loop or something

        R1.Visibility = Visibility.Hidden;
        R2.Visibility = Visibility.Hidden;
        R3.Visibility = Visibility.Hidden;
        R4.Visibility = Visibility.Hidden;
        R5.Visibility = Visibility.Hidden;
        R6.Visibility = Visibility.Hidden;
        R7.Visibility = Visibility.Hidden;
        R8.Visibility = Visibility.Hidden;
        R9.Visibility = Visibility.Hidden;
        R10.Visibility = Visibility.Hidden;

I dont want to do it in array because

its not efficiency

i tought about something like this

 for (int i = 1; i < 11; i++)
 {
   R+i.Visibility = Visibility.Hidden;
 }

is it possible?

thanks for the help :)

Gad
  • 154
  • 8
  • What are `Rx`? You could [enumerate children](https://stackoverflow.com/q/10279092/1997232) of certain container to access them in the loop. A better approach would be to separate view and model and have observable collection of `bool` to change controls visibility [using bindings](https://stackoverflow.com/a/7000922/1997232). – Sinatr Sep 15 '20 at 12:52
  • 1
    Something like `foreach (var rect in canvas.Children.OfType()) { rect.Visibility = Visibility.Hidden; }` – Clemens Sep 15 '20 at 12:57

1 Answers1

0

Use a method that takes them as params and applies them via a loop

public void SetHidden(params R[] items)
{
    foreach(var r in items)
    {
        r.Visibility = Visibility.Hidden;
    }
}

and call it like

SetHidden(R1,R2,R3,R4,R5,R6,R7,R8,R9,R10);
Jonesopolis
  • 25,034
  • 12
  • 68
  • 112