有条件地加载WPF控件

鉴于:

    

我在stackpanel中有两个控件(control1和control2),而且我一次只想显示一个控件。 如代码所示,控件的可见性由“IsDateReadOnly”和“CanShowDateControl”驱动。 并且,根据我的viewmodel逻辑… CanShowDateControl =!IsReadOnly。

所以,有一段时间我只会显示两个控件中的一个。

问题:我的问题是,虽然我一次只显示一个控件,但我的xaml正在创建两个控件的实例。 是否可以创建仅显示我正在显示的控件的实例?

给那个:

1)我想使用绑定显示/隐藏,因此逻辑位于我的viewmodel中。 2)我可以将这两个控件保存在一个包装器控件中。 因为我在不同的地方使用它。

谢谢你的关注。

ContentControlContentTemplateSelector与两个DataTemplate一起使用。 一个用于ReadOnly ,另一个用于Not ReadOnly

在选择器中,根据属性返回相应的DataTemplate

你可以采用的其他方法是创建一个Custom Control ,它有两个(或多个,如果超过两个)属性来存储两个控件。 根据条件,它应该将其中一个添加到Visual Tree ,这将阻止另一个加载。