показать / скрыть элементы управления на основе значения раскрывающегося списка - PullRequest
3 голосов
/ 10 декабря 2011

У меня есть приложение, над которым я работаю, и мне нужно показать / скрыть элементы управления на основе выбранного значения в раскрывающемся списке.По умолчанию большинство элементов управления будут скрыты, и когда значение («VFD») выбрано из элемента управления «Устройство управления», скрытые элементы управления станут видимыми.

У меня есть имя объекта MCCLoads, которое имеет отношения со всеми другими объектами, которые управляют раскрывающимися списками.

Экран, к которому я хочу применить эту функцию, называется MCCLoadsSetListDetail

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

public void MCCLoadsSetListDetail_SelectionChanged()
    {
        this.FindControl("CTRL_DEVICE").IsEnabled = true;

        if (this.MCCLoadsSetListDetail.SelectedItem.Loads_CTRL_Device == "VFD")
        {
            this.FindControl("Line_Reactor_IMP").IsVisible = false;
        }
    }

MCC Loads Form MCC Loads Table with relationships

Заранее спасибо, Джейсон

1 Ответ

3 голосов
/ 25 июля 2012

Внутри метода Created для вашего экрана подпишитесь на событие ControlAvailable. Когда это срабатывает, вы можете привести свой элемент управления Silverlight к элементу управления Windows, чтобы подписаться на событие SelectionChanged. Вы можете ответить на это, как пожелаете ...

partial void YourScreen_Created()
{
    this.FindControl("YourDropDown").ControlAvailable += new EventHandler<ControlAvailableEventArgs>(YourDropDown_ControlAvailable);
}

void YourDropDown_ControlAvailable(object sender, ControlAvailableEventArgs e)
{
    var ctrl = e.Control as AutoCompleteBox;
    ctrl.SelectionChanged += new SelectionChangedEventHandler(ctrl_SelectionChanged);
}

void ctrl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    dynamic selectedItem = (sender as AutoCompleteBox).SelectedItem;
    if (selectedItem == null)
    {
        return;
    }

    // Your logic goes here....
    this.FindControl("CTRL_DEVICE").IsEnabled = true;
    if (selectedItem.StringValue == "VFD")
    {
        this.FindControl("Line_Reactor_IMP").IsVisible = false;
    }
}

Надеюсь, это поможет ...

...