我可以以编程方式更改绑定到用户控件XAML的类

时间:2011-01-23 11:45:10

标签: wpf wpf-controls

如果我最初

,请在此用户控件XAML中
<UserControl x:Class="someclass"

我可以通过编程方式更改课程吗?在哪里和如何?

3 个答案:

答案 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();
   }
}

如果不清楚,请告诉我,我会扩展代码示例; - )