原創|其它|編輯:郝浩|2012-12-05 15:34:56.000|閱讀 356 次
概述:如何在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屬性出現在網格中,用新的編輯器來編輯它。
擴展節點與自定義編輯器相結合
默認情況下,如果你提供了一個類型的編輯器,屬性網格將停止顯示該類型的擴展 - 用戶將無法編輯個人屬性。有時候,這是不可取的:
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件