0

DataFieldDescriptionViewer部分は、System.ComponentModel のDescriptionプロパティを表示するために使用されます。生成されたフォームのツールヒントとしてのDisplayAttribute 。この機能は使用したくありません。スタイルを使用してDescriptionViewerVisibilityCollapsedに設定するか、 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 を使用しています。WCF RIA Services Beta Business Application Silverlight 3 プロジェクト内の Silverlight Toolkit の2009 年 10 月リリースのDataForm.Toolkit、Version=2.0.5.0 。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 に付属する生成されたレイアウトが失われますが、単純なグリッドで簡単に行うことができます

于 2009-12-04T00:07:11.877 に答える
0

Reflector を使用すると、DataField.OnApplyTemplateメソッドがGenerateUIというプライベート メソッドを呼び出すことがわかります。これは、従来のコードを使用して、DescriptionViewer の列を持つグリッドを作成します。 .NET clr レベルの不適切なハックです。ここで何か不足していますか?

想定される生産性の向上から利益を得たい場合は、これらの Silverlight Toolkit コントロールの既定の動作に非常に近づける必要があるという結論に達し始めています。かなり些細なカスタマイズ以上のものは、現時点では不完全な話のようです.

于 2009-12-03T23:17:01.037 に答える