【发布时间】:2011-01-12 12:26:47
【问题描述】:
给定:
<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)我可以将这两个控件保存在一个包装控件中。因为我在不同的地方使用它。
感谢您的关注。
【问题讨论】:
-
创建两个控件的实例有那么大的问题吗?
-
@ChrisF:因为我创建了这个控件的多个实例,如果我可以让这个控件消耗更少的内存,它将大大优化内存使用。