如果我最初
,请在此用户控件XAML中<UserControl x:Class="someclass"
我可以通过编程方式更改课程吗?在哪里和如何?
答案 0 :(得分:2)
不,因为这是一个编译时指令。 msdn
您应该使用可以通过任何方式进行交换的支持类,并使用属性或ObjectDataProvider来访问绑定方法。
答案 1 :(得分:2)
我的回答可能不合适,但是切换控件的另一个选择是将它们放在内容控件中。 而且在代码中你可以说:
ContentControl.Content = new MyUserControl();
答案 2 :(得分: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();
}
}
如果不清楚,请告诉我,我会扩展代码示例; - )