none
LightSwitch | CheckBox の On/Off により TextBox の IsEnabled を切り替えたい RRS feed

  • 質問

  • 下図のように、
     
    • CheckBox (Writable)
    • TextBox (Name)
     
    を配置し、
     
     
     
    CheckBox の On/Off 切り替えにより、
    TextBox の IsEnabled が切り替えられるようにしたい
    と考えています。
     
     
    すぐに思いついたのは以下のようなものですが、
     
    partial void BsListDetail_Activated()
    {
    	ctrlWritableChbx = this.FindControl("Writable1");
    	ctrlName1Tbx = this.FindControl("Name1");
    
    	ctrlWritableChbx.ControlAvailable 
    		+= new EventHandler<ControlAvailableEventArgs>(ctrlWritableChbx_ControlAvailable);
    }
    
    void ctrlWritableChbx_ControlAvailable(object sender, ControlAvailableEventArgs e)
    {
    	CheckBox chbx = (CheckBox)e.Control;
    	chbx.Click += new System.Windows.RoutedEventHandler(chbx_Click);
    }
    
    void chbx_Click(object sender, System.Windows.RoutedEventArgs e)
    {
    	ctrlName1Tbx.IsEnabled = (bool)((CheckBox)sender).IsChecked;
    }
    
     
    こんな面倒なやり方ではなく、
     
    Data "Writable" の変化を
    Screen 上の Control の Property (IsEnabled) に反映させる
    簡単な方法はないでしょうか?
     
     
    Silverlight なら
    TextBox の IsEnabled を、
    CheckBox の IsChecked と Bind するのでしょうが、
     
    LightSwitch ではどうするのでしょう?
    以下のような方法もありそうなのですが、第2引数が分からない。
     
    ctrlName1Tbx.SetBinding(CheckBox.IsCheckedProperty, "???", BindingMode.TwoWay);
    




    • 編集済み custar 2012年2月3日 18:06
    2012年2月3日 18:04

回答

  • 以下で出来たような感じ。
    他に方法はないのだろうか?
     
    ctrlName1Tbx.SetBinding(TextBox.IsEnabledProperty, "Screen.Bs.SelectedItem.Writable", BindingMode.TwoWay);
    
     
     

    • 回答としてマーク custar 2012年2月13日 9:55
    2012年2月3日 18:31