WPF进行查看/编辑控制的好方法?

时间:2010-06-15 06:02:14

标签: wpf controls crud

这只是一个需要讨论的问题 - 在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>

我希望这个想法很明确。我现在看到的两个选项

  1. 两个可见度切换和
  2. 的网格
  3. 没有标题面板的TabControl
  4. 这只是一个讨论问题 - 没有太多麻烦,但我只是想知道是否还有其他可能性和优雅的解决方案。

4 个答案:

答案 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建议的操作。