2011-12-09 157 views
3

我有一個應用程序,我正在處理,並需要基於下拉列表中選定的值顯示/隱藏控件。默認情況下,大多數控件都將隱藏,並且當從控制設備控件中選擇一個值(「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

在此先感謝,傑森

+0

我相信我會在那種情況下也做了同樣的事情。它只是不覺得我們只能通過FindControl訪問控件。 –

回答

3

在您的屏幕的創建方法內部訂閱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; 
    } 
} 

希望這有助於...

+0

很棒的答案。解決了我的問題!對於感興趣的讀者:selectedItem.Value將爲您提供所選數據綁定項的引用。 HansjörgReister – user2738103

相關問題