2011-12-09 21 views
3

私は現在作業中のアプリケーションを持っており、ドロップダウンリストの選択された値に基づいてコントロールを表示/非表示する必要があります。デフォルトでは、ほとんどのコントロールは非表示になり、コントロールデバイスコントロールから値( "VFD")を選択すると、非表示のコントロールが表示されます。ドロップダウンリストの値に基づいてコントロールを表示/非表示

私は、ドロップダウンリストを駆動する他のすべてのエンティティとの関係を持つエンティティ名MCCLoadsを持っています。

私は、この機能を適用する画面が、私はこのコードのビットを使用しようとしていたが、これは

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; 
     } 
    } 
を行くための適切な方法であれば、私はよく分からないMCCLoadsSetListDetail

命名されました事前に

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はあなたに選択されたデータバインドされた項目の参照を与えるでしょう。 HansjörgReister – user2738103

関連する問題