0

DataFieldDescriptionViewer部分用于显示 System.ComponentModel 的Description属性。DisplayAttribute作为生成表单中的工具提示。我不想使用此功能,尽管我可以通过使用样式将 DescriptionViewerVisibility 设置为 Collapsed 或将 DescriptionViewerStyle 设置为 null 来确保 UI 元素不可见,如下所示仍有空间保留在此元素的 DataField 布局。

<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,来自WCF RIA Services Beta 业务应用程序 Silverlight 3 项目中的 Silverlight Toolkit 2009 年 10 月版。我正在使用 Visual Studio 2008 SP1。我知道有一个 2009 年 11 月的版本,但我在发行说明中看不到任何提及此更改的内容。

4

2 回答 2

1

另一种解决方案是使用 DataForm Label 和控件来显示您的字段。

而不是像这样使用 DataField 并最终为 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 附带的生成布局,但您可以使用简单的 Grid 轻松完成

于 2009-12-04T00:07:11.877 回答
0

使用 Reflector 我可以看到DataField.OnApplyTemplate方法调用了一个名为GenerateUI的私有方法,该方法使用常规代码为 DescriptionViewer 创建一个带有 Column 的 Grid,如果不做一些非常低的操作,我看不到防止这种情况的方法.NET clr 级别的 hack,这是不合适的。我在这里错过了什么吗?

我开始得出结论,如果您想从假定的生产力提升中受益,您要么需要非常接近这些 Silverlight Toolkit 控件的默认行为。目前,任何更多非常微不足道的定制似乎都是一个不完整的故事。

于 2009-12-03T23:17:01.037 回答