根据下拉列表值显示/隐藏控件

时间:2011-12-09 22:46:33

标签: visual-studio-lightswitch

我有一个我正在处理的应用程序,需要根据下拉列表中的选定值显示/隐藏控件。默认情况下,大多数控件都将被隐藏,当从控制设备控件中选择一个值(“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 个答案:

答案 0 :(得分:3)

在屏幕的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;
    }
}

希望这会有所帮助......