0

したがって、実行時に生成された動的クエリのプレビューデータを保持するXamDataGridのみを含む単純なウィンドウがあります...

public partial class DataPreview : Window
{
    public DataTable Data { get; set; }
    public DataPreview(string SQL)
    {
        InitializeComponent();

        this.DataContext = this;
        Data = DatabaseManager.ExecuteQuery(SQL);
    }
}

XamDataGridのデータソースにデータバインドしています...

<igDP:XamDataGrid DataSource="{Binding Data}" ScrollingMode="Immediate">
     <igDP:XamDataGrid.FieldSettings>
          <igDP:FieldSettings
             AllowEdit="False"/>
     </igDP:XamDataGrid.FieldSettings>
</igDP:XamDataGrid>

これですべて正常に機能します。問題は、XamDataGridのエディターのデータ型がフィールドのデータ型と一致しない場合があることです。たとえば、すべての数値はドル記号で表示されます。この行を追加しようとしました...

EditAsType="{x:Type sys:String}"

これにより、実際の通貨額を除くすべてが修正されました。実際の通貨額は、ドル記号なしでxx.xxxxとして表示されます。私がオンラインで見つけたすべてのソリューションは、xamlでフィールドを直接編集しているようですが、フィールドはすべて動的であるため、これはオプションではありません。xamlでエディターを正しく設定するためにできることはありますか?または、XamDataGridから正しく表示するようにデータをマッサージするためにコードで実行できるルーチンはありますか?XamDataGridを使用して、すべての動的列と関連する方法でコードを共有できますが、データ型に基づいて正しくフォーマットできますか?

4

1 に答える 1

2

特定のタイプのフィールドに使用されるエディターは、 ValueEditor.RegisterDefaultEditorForTypeを使用して設定できます。エディターが正しいタイプであり、特定のタイプのマスクを変更しようとしている場合は、XamMaskedEditor.RegisterDefaultMaskForTypeを使用できます。

同じタイプの異なるフィールドに対して異なる方法でマスクまたはエディターを設定する場合は、FieldLayoutが作成された後にコードでこれを行う必要があります。このために、FieldLayoutInitializedイベントを使用できます。

于 2012-05-07T21:27:34.130 に答える