Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 我可以通过编程方式更改绑定到用户控件XAML的类吗_Wpf_Wpf Controls - Fatal编程技术网

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一个名称,然后在代码中更改内容。如果有问题,请告诉我这对某些用户控件有效,而对某些用户控件无效,可能是因为我放置了一些代码隐藏,明天将需要进一步调查。希望我可以一直让它工作,这将是最好的解决方案:)