2011-01-23 71 views

回答

1

實例化時不能更改類類型,但可以實例化新對象。

選擇1:

[這不是我試圖自己,但我想你應該可以把它關閉,如果你給該控件的名稱。然後編程,你可以這樣做:

<UserControl x:Class="someclass" x:Name="myControl" ... 

在代碼中完成:

this.myControl = new SomeOtherUserControl(); 

備選方案2:

創建提供你希望在運行時在你的控制來改變行爲的接口。 並讓您的用戶控件包含一個實現此行爲的實例。然後您可以在運行時更改實例。

喜歡的東西:

interface ISpecialControlBehaviour 
{ 
... 
} 

class DefaultBehaviour: ISpecialControlBehaviour 
{ 
} 

class Behaviour2 : ISpecialControlBehaviour 
{ 
} 

用戶控件:

class MyUserControl 
{ 
    // use this property to change behaviour at runtime. 
    ISpecialControlBehaviour Behaviour {get;set;} 
    MyUserControl() 
    { 
     Behaviour = DefaultBehaviour(); 
    } 
} 

如果沒有明確的讓我知道,我將擴展代碼示例;-)

+0

非常感謝你,想我會盡力感謝(如果它的作品,你會得到:) – user310291 2011-01-23 12:19:22

2

不,因爲這是編譯時指令。 msdn

您應該使用可以任意交換的備份類,並使用屬性或ObjectDataProvider訪問綁定方法。

2

我可能會關閉在我的回答,但另一個切換控件的選項是將它們放在內容控件中。 ,比在代碼中,你可以說:

ContentControl.Content = new MyUserControl(); 
+0

非常有趣的想法之前,將重新讀取多次瞭解正確的答案:)) – user310291 2011-01-23 13:45:56

相關問題