0

數據字段DescriptionViewer部分數據域的DescriptionViewer部的空間用於顯示位於System.ComponentModel的說明屬性。 DisplayAttribute作爲生成表單中的工具提示。我不想使用這個功能,雖然我可以確保的UI元素不是通過使用樣式設置要麼DescriptionViewerVisibility摺疊,或通過設置DescriptionViewerStyle爲空,如下圖所示可見, DataField佈局中爲此元素保留了空間。開墾從上一個Silverlight工具包的DataForm

<Style x:Key="DataFieldStyle1" TargetType="dataFormToolkit:DataField"> 
    <Setter Property="DescriptionViewerVisibility" Value="Collapsed"/> 
    <Setter Property="DescriptionViewerStyle" Value="{x:Null}" /> 
</Style> 

這個空間在我的場景中是浪費,我想擺脫它。我希望這個佈局可以通過DataField.Template屬性公開,但是當我使用Blend編輯默認模板的副本時,佈局不在那裏。

我在使用System.Windows.Controls.Data。 DataForm.Toolkit,版本= 2.0.5.0 from 2009年10月在WCF RIA Services Beta業務應用程序Silverlight 3項目中發佈了Silverlight工具包。我正在使用Visual Studio 2008 SP1。我知道2009年11月發佈了一個版本,但在發行說明中我看不到任何提及此更改的情況。

回答

1

另一種解決方案是使用DataForm Label和一個控件來顯示您的字段。

而不是使用一個數據字段這樣,最終有空間DescriptionViewer

<dataControls:DataField> 
    <TextBox Text="{Binding FirstName, Mode=TwoWay}" /> 
</dataControls:DataField> 

您可以使用此代碼,你會不會有DescriptionViewer

<dataInput:Label Target="{Binding ElementName=tbFirstName}" /> 
<TextBox x:Name="tbFirstName" Text="{Binding FirstName, Mode=TwoWay}" /> 

有了這個解決方案,你會鬆散DataForm附帶的生成佈局,但您可以使用簡單的網格輕鬆完成此設計

+0

這聽起來像是個好主意。除了添加標籤和描述查看器,DataField是否會提供任何其他值,我將失去並需要實現自己?我希望會有一些由DataField控件實現的驗證行爲。 – 2009-12-04 00:39:25

+0

此解決方案還要求您爲ReadOnly和Required等其他DataAnnotation屬性實現可視化和行爲。 – 2009-12-04 00:45:28

+0

必需的DataAnnotation有效。 對於ReadOnly我沒有測試它。其他DataAnnotation也可以像Display一樣工作。 – Zied 2009-12-05 04:33:04

0

使用反射鏡我可以看到DataField.OnApplyTemplate方法調用名爲GenerateUI一個私有方法,它使用傳統的代碼來創建爲DescriptionViewer的列的網格,我看不到的方式來如果不做一些非常低級別的.NET clr類型的破解,這將是不恰當的。我在這裏錯過了什麼嗎?

我開始得出結論,如果您想從假定的生產力增益中獲益,您需要堅持非常接近這些Silverlight Toolkit控件的默認行爲。目前,任何更瑣碎的定製似乎都是一個不完整的故事。

相關問題