Given:
<StackPanel>
<View:ArcController x:Name="control1" Visibility="{Binding Path=CanShowDateControl, Converter={StaticResource bool2VisibilityConverter}}" />
<my1:DateLabelView x:Name="control2" DataContext="{Binding Path=DateLabelViewModel}" Visibility="{Binding ElementName=ctrlTableToolbar, Path=DataContext.IsDateReadOnly, Converter={StaticResource bool2VisibilityConverter}}" />
</StackPanel>
我在堆栈面板中有两个控件(control1 和 control2),并且一次我只想显示其中一个控件。
如代码所示,控件的可见性由“IsDateReadOnly”和“CanShowDateControl”驱动。
而且,根据我的视图模型逻辑... CanShowDateControl = !IsReadOnly。
因此,我一次只会显示两个控件之一。
问题:我的问题是,虽然我一次只显示一个控件,但我的 xaml 正在创建两个控件的实例。是否可以仅创建我所显示的控件的实例?
给那个:
1)我想使用绑定来显示/隐藏,以便逻辑位于我的视图模型中。
2)我可以将这两个控件保留在一个包装控件内。因为我在不同的地方使用它。
感谢您的关注。
Use a ContentControl
and ContentTemplateSelector
有两个DataTemplate
s。一个为ReadOnly
和其他用于Not ReadOnly
.
在选择器中,根据属性,返回合适的DataTemplate
.
你可以采取的另一种方式是创建一个Custom Control
它有两个(或更多,如果超过两个)属性来存储两个控件。根据条件,它应该将其中之一添加到Visual Tree
这将阻止加载另一个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)