我有一个类Person
,它有三个属性Name
、LastName
和FullName
。我使用MVVM-在ModelView中,我有一个List<Person> Persons
。
我的观点如下:
<Button Content="LastName" Command="{Binding LastNameCommand, Mode=OneWay}" />
<ListView IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Persons}">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="Name"
DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="FullName"
DisplayMemberBinding="{Binding FullName}" />
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
我现在的目标是改变
<GridViewColumn Header="Name"
DisplayMemberBinding="{Binding Name}" />
至
<GridViewColumn Header="LastName"
DisplayMemberBinding="{Binding LastName}" />
当我按下按钮时。
我怎么才能做到呢?
1条答案
按热度按时间mnemlml81#
设置或更改
GridViewColumn
的DisplayMemberBinding
属性应在视图中完成。视图模型不应该知道或关心任何
DisplayMemberBinding
,它只更新源属性(在本例中是Name
和FullName
)。因此,为视图中的按钮挂接一个事件处理程序,并在其中设置与视图相关的属性:
这不会以任何方式破坏MVVM模式。尝试修改视图模型中的
DisplayMemberBinding
肯定会破坏MVVM模式。MVVM不是要从视图中删除与视图相关的代码。它是要分离关注点。