2011-12-09 3 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; 
     } 
    } 
을 갈 수있는 적절한 방법 경우 I 코드의이 비트를 사용하려고했지만 잘 모르겠어요 사전에

MCC Loads Form MCC Loads Table with relationships

감사합니다, 제이슨

+0

나는 내가 그 시나리오에서 같은 일을 한 것 생각 ...이 응답 할 수 있습니다. FindControl을 통해서만 컨트롤에 액세스 할 수 있다고 생각하지 않습니다. –

답변

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; 
    } 
} 

희망 ...

+0

좋은 답변입니다. 내 문제를 해결! 관심있는 판독기에 대해 : selectedItem.Value는 선택된 databound 항목에 대한 참조를 제공합니다. Hansjörg Reister – user2738103

관련 문제