locked
LightSwitch | Control Extension を直接適用すると ControlAvailable が効かなくなる RRS feed

  • 質問

  • 以下の Control Extension (TextBox) を作りました。
    作っただけで何も弄っていません。


    <UserControl ...>
      <TextBox Text="{Binding StringValue, Mode=TwoWay}" />
    </UserControl>


    これを下図のように Name Property に直接適用すると、





    FindControl("Name").ControlAvailable が効かなくなります。


    partial void CreateNewB_Created()
    {
    	this.FindControl("Name").ControlAvailable += (object sender, ControlAvailableEventArgs e) =>
    	{
    		...
    	};
    }


    ここで、敢えて以下のように Custom Control として割り当てると、





    FindControl("Name").ControlAvailable は効いてくれます。


    何故効いたり効かなかったりするのでしょう?
    Control Extension に何か設定が必要なのか...

    何か情報をお持ちの方、いらっしゃいませんか?
    • 編集済み custar 2012年4月10日 6:02
    • 種類を変更済み custar 2012年4月10日 6:22
    • 種類を変更済み custar 2012年4月11日 7:58
    2012年4月10日 5:59

回答

  • 以下によると、


    - Walkthrough: Creating a Detail Control Extension / Make the Control Programmable

    Implement the IContentVisual to allow the application developer to access the TextBox control by using IContentItemProxy.SetBinding/ControlAvailable APIs.


    だそうなので、修正。


    <TextBox Name="TextBox1" .../>

    public partial class TextBoxExt : UserControl, IContentVisual
    {
    	...
    	object IContentVisual.Control
    	{
    		get { return this.TextBox1; }
    	}
    
    	void IContentVisual.Show()
    	{}
    }


    ControlAvailable が効きました。
    • 回答としてマーク custar 2012年4月11日 7:59
    2012年4月10日 6:21