彩票走势图

Mindscape WPF Elements使用教程:编辑自定义类型

原创|其它|编辑:郝浩|2012-12-05 15:34:56.000|阅读 303 次

概述:如何在Mindscape WPF Elements中编辑自定义类型呢?本文将通过代码示例来详细介绍。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

编辑自定义类型

    例子中的对象有两个属性,HomePhone 和WorkPhone,类型都是PhoneNumber。PropertyGrid控件没有任何的内置的来明白PhoneNumber这中类型,所以会使用ToString()方式显示这些值,而且允许用户钻入和修改它们的CountryCode、 RegionCode、 Number属性。

    现在来看一个更为有效的方法来用PropertyGrid控件显示PhoneNumber类型,因此用户可以更容易看到PhoneNumber和更容易编辑,要做到这一点,我们将创建一个类型编辑器,然后将其连接到表格。

定义编辑模板

    A类型编辑器是一个对于编辑类型比较合适的有着数据绑定的基础的数据模版,对于PhoneNumber类型的编辑模版可以非常的简单:三个文本框,一个绑定到CountryCode属性,一绑定到RegionCode属性,一个绑定到数量属性,还将提供一些只读版面给用户一个视觉提示,编辑数据模板看起来像这样:

Phone number editor
<DataTemplate x:Key='PhoneNumberEditor'>
    <StackPanel Orientation='Horizontal'>
      <StackPanel.Resources>
        <Style TargetType='{x:Type TextBlock}'>
          <Setter Property='Foreground' Value='{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}'/>
          <Setter Property='FontWeight' Value='Bold'/>
        </Style>
        <Style TargetType='{x:Type ms:TextBox}'>
          <Setter Property='BorderThickness' Value='0'/>
        </Style>
      </StackPanel.Resources>
      <TextBlock>+</TextBlock>
      <ms:TextBox Text='{Binding Path=CountryCode, UpdateSourceTrigger=PropertyChanged}'/>
      <TextBlock> (</TextBlock>
      <ms:TextBox Text='{Binding Path=RegionCode, UpdateSourceTrigger=PropertyChanged}'/>
      <TextBlock>) </TextBlock>
      <ms:TextBox Text='{Binding Path=Number, UpdateSourceTrigger=PropertyChanged}'/>
    </StackPanel>
  </DataTemplate>

属性网格使用新的模版

现在需要告诉PropertyGrid控件,使用此模板的PhoneNumber对象,要做到这一点,添加一个TypeEditor对象的

PropertyGrid.Editors集合,可以使用XAML属性语法如下:

<ms:PropertyGrid.Editors>
        <ms:TypeEditor EditedType='{x:Type t:PhoneNumber}' EditorTemplate='{StaticResource PhoneNumberEditor}'/>
      </ms:PropertyGrid.Editors>

请注意,任何一个PhoneNumber属性出现在网格中,用新的编辑器来编辑它。

扩展节点与自定义编辑器相结合

默认情况下,如果你提供了一个类型的编辑器,属性网格将停止显示该类型的扩展 - 用户将无法编辑个人属性。有时候,这是不可取的:

  • 如果该类型有很多,其中大部分很少使用,你可以设计出一个随地编辑器来实现编辑共同属性,但用户仍然需要能够以某种方式来获得的其他属性。
  • 如果您不想提供就地编辑,但你想要呈现比ToString()更有意义的表示,你可以创建一个只读的数据模板和关联的类型。在这种情况下,用户需要能够以展开该节点来执行编辑。

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:慧都控件

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP