这只是一个需要讨论的问题 - 在WPF中进行查看/编辑控制的最佳方法是什么?例如。我们有一个实体对象Person,它有一些道具(名字,姓氏,地址,电话等)。控件的一个表示是只读视图。而另一个人将拥有同一个人的编辑视图。例如:
<UserControl x:Name="MyPersonEditor">
<Grid>
<Grid x:Name="ViewGrid" Visibility="Visible">
<TextBlock Text="Name:"/>
<TextBlock Text="{Binding Person.Name}"/>
<Button Content="Edit" Click="ButtonEditStart_Click"/>
</Grid>
<Grid x:Name="EditGrid" Visibility="Collapsed">
<TextBlock Text="Name:"/>
<TextBox Text="{Binding Person.Name}"/>
<Button Content="Save" Click="ButtonEditEnd_Click"/>
</Grid>
</Grid>
</UserControl>
我希望这个想法很明确。我现在看到的两个选项
这只是一个讨论问题 - 没有太多麻烦,但我只是想知道是否还有其他可能性和优雅的解决方案。
答案 0 :(得分:3)
答案 1 :(得分:1)
<Grid>
<TextBlock Text="Name:"/>
<LabelText="{Binding Person.Name}" Cursor="IBeam" MouseDoubleClick="lblName_dblClick"/> <!-- set the IsEditMode to true inside this event -->
<TextBox Text="{Binding Person.Name}" Visibility="{Binding IsEditMode, Converter={StaticResource BoolToVisConverter}}"/>
<Button Content="OK" Click="btnSave_Click" Visibility="{Binding IsEditMode, Converter={StaticResource BoolToVisConverter}}"/> <!-- set the IsEditMode to false inside this event -->
</Grid>
如果您熟悉,请使用命令。
答案 2 :(得分:0)
我会用2个不同的配置创建一个单独的视图,例如。 2个不同的构造函数,使相关字段可编辑/只读或可见/隐藏
这样您就不会编写冗余XAML,并且可以在使用MVVM时配置代码后面的所有字段或ViewModel
答案 3 :(得分:0)
听起来像DataTemplateSelector对我的工作。如果您希望将各个控件切换到位,我会做类似于Veer建议的操作。