【发布时间】:2017-06-02 14:31:01
【问题描述】:
最近我和我的同事正在讨论视图绑定到视图模型中的可见性属性。
在我们的一个项目中,为了使控件可见/折叠,我的同事绑定到可见性属性,并且 viewModel 将在必要时将该属性设置为 Visibility.Visible / Visibility.Collapse。
它有效,但我想知道它是否是一个好的设计。
正如我所想,如果 viewModel 将属性设置为 Visible/collapse,那么 viewModel 知道视图在做什么,相反它应该包含一个 bool 属性,并且视图应该绑定到一个 bool 属性并使用转换器来决定是否使元素可见/折叠。在这种情况下,viewmodel 对视图一无所知。
示例: 如果用户属于一个团队,则显示一个 TextBlock(团队名称)
private bool _isUserBelongsToTeam;
public bool IsUserBelongsToTeam
{
get { return _isUserBelongsToTeam; }
set { _isUserBelongsToTeam = value; NotifyPropertyChange("IsUserBelongsToTeam"); }
}
XAML:
<TextBlock Text= "Team name" Visibility= "{Binding IsUserBelongsToTeam, Converter={StaticResource BoolToVisibilityConverter}}" />
private bool _isTeamVisible;
public bool IsTeamVisible
{
get { return _isTeamVisible; }
set { _isTeamVisible= value; NotifyPropertyChange("IsTeamVisible"); }
}
XAML:
<TextBlock Text= "Team name" Visibility= "{Binding IsTeamVisible}" />
哪种方式更好实施?
【问题讨论】:
-
请记得点赞有用的答案 :) stackoverflow.com/help/privileges/vote-up