Доступ к сгенерированным даным образом свойствам элементов пользовательского интерфейса - PullRequest
0 голосов
/ 20 апреля 2019

Сейчас моя цель - сгенерировать количество переключателей на основе динамического количества значений, поступающих позже в финальном приложении, которое также может быть изменено позже.

Я написал небольшой фрагмент, чтобы проверить это. Здесь используется класс CustomSwitch с некоторым дополнительным свойством для именования, а затем программно добавляются переключатели в зависимости от количества записей в списке.

Проблема в том, что позже мне понадобится отслеживать состояние переключателя указанного переключателя, чего я не знаю, как достичь, учитывая, что не могу динамически добавлять разные имена переменных (или могу и?) к динамически генерируемым переключателям.

public MainPage()
    {
        InitializeComponent();

        List<testObject> testList = new List<testObject>()
        {
            new testObject {testName = "a", testNumber = 1 },
            new testObject {testName = "b", testNumber = 2 },
            new testObject {testName = "c", testNumber = 3 },
            new testObject {testName = "d", testNumber = 4 },
            new testObject {testName = "e", testNumber = 5 }
        };

        int uiCounter = 1;

        foreach(var test in testList)
        {                
            StackUI.Children.Add(new CustomSwitch { SwitchPropertyName = test.testName });
            StackUI.Children.Add(new Label { Text = test.testName + uiCounter });
            uiCounter++;
        }


    }      

Каков наилучший способ сделать это сейчас, но при этом иметь возможность точно получить доступ к переключенному состоянию позже и работать с ним?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Я знаю, что это немного хак, но вы можете использовать атрибут StyleId или StyleClass (который может быть установлен практически на каждом элементе пользовательского интерфейса, насколько мне известно), а затем либо перебрать свои макеты, либо добавить переключается на список, а затем перебирает этот список и ищет StyleId. Это довольно просто, вы можете использовать Linq для поиска правильного переключающего элемента.

0 голосов
/ 21 апреля 2019

Я думаю, что с помощью switch.Toggled вы можете достичь этого.

private void switch_Toggled(object sender, ToggledEventArgs e)
        {
            var switch = (sender as CustomSwitch )?.SwitchPropertyName ;
        }

и тогда вы сможете понять, какой переключатель был изменен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...