Wpf 我可以通过编程方式更改绑定到用户控件XAML的类吗
在这个用户控件中,如果我最初Wpf 我可以通过编程方式更改绑定到用户控件XAML的类吗,wpf,wpf-controls,Wpf,Wpf Controls,在这个用户控件中,如果我最初 <UserControl x:Class="someclass" 否,因为这是一个编译时指令 您应该使用可以通过任何方式交换的支持类,并使用属性或访问绑定方法。否,因为这是一个编译时指令 您应该使用可以通过任何方式交换的支持类,并使用属性或访问绑定方法。实例化时不能更改类类型,但可以实例化新对象 备选方案1: [这不是我自己尝试过的,但我认为如果你给控件命名,你应该能够成功。然后通过编程你可以做到: <UserControl x:Class="some
<UserControl x:Class="someclass"
否,因为这是一个编译时指令
您应该使用可以通过任何方式交换的支持类,并使用属性或访问绑定方法。否,因为这是一个编译时指令
您应该使用可以通过任何方式交换的支持类,并使用属性或访问绑定方法。实例化时不能更改类类型,但可以实例化新对象
备选方案1:
[这不是我自己尝试过的,但我认为如果你给控件命名,你应该能够成功。然后通过编程你可以做到:
<UserControl x:Class="someclass" x:Name="myControl" ...
备选方案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();
}
}
如果不清楚,请告诉我,我将扩展代码示例;-)实例化时不能更改类类型,但可以实例化新对象
备选方案1:
[这不是我自己尝试过的,但我认为如果你给控件命名,你应该能够成功。然后通过编程你可以做到:
<UserControl x:Class="someclass" x:Name="myControl" ...
备选方案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();
}
}
如果不清楚,请告诉我,我将扩展代码示例;-)我的答案可能是关闭的,但切换控件的另一个选项是将它们放在内容控件中。
在代码中,你可以说:
ContentControl.Content = new MyUserControl();
我的回答可能是关闭的,但切换控件的另一个选项是将它们放在内容控件中。
在代码中,你可以说:
ContentControl.Content = new MyUserControl();
非常感谢,在尝试之前会重读多次以理解:)非常感谢,在尝试之前会重读多次以理解:)非常有趣的想法我会尝试的谢谢(如果可行,你会得到正确的答案:))它应该可以工作,而且很简单。只需给ContentControl一个名称,然后在代码中更改内容。让我知道是否有问题对于某些用户控件有效,而对于某些用户控件无效,可能是由于一些代码隐藏,我将不得不在明天进一步调查。希望我可以一直让它工作,这将是最好的解决方案:)非常有趣我会试试的,谢谢(如果有用的话,你会得到正确的答案:))它应该可以工作,而且很简单。只需给ContentControl一个名称,然后在代码中更改内容。如果有问题,请告诉我这对某些用户控件有效,而对某些用户控件无效,可能是因为我放置了一些代码隐藏,明天将需要进一步调查。希望我可以一直让它工作,这将是最好的解决方案:)