1

私はいくつかのラピッド プロトタイピングを行っており、Web サイトの管理インターフェイスのモックを作成しようとしており、WCF RIA サービスを使用しています。サーバーからクライアントにドメイン サービスを公開して使用することはできますが、サーバーでのクエリの結果にデータが含まれていない場合に、データグリッドで自動生成された列を取得するのに苦労しています。

 <riaControls:DomainDataSource Name="domainDataSource1" 
        LoadSize="20" QueryName="GetUsers" AutoLoad="True" >
            <riaControls:DomainDataSource.DomainContext>
                <ds:CobraDomainContext />
            </riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>

<sdk:DataGrid ItemsSource="{Binding Data, ElementName=domainDataSource1}" AutoGenerateColumns="True" IsReadOnly="False" Width="250" Height="150" >
            </sdk:DataGrid>

これにより、空の 250x150 データグリッド (列なし/行なし) がレンダリングされます。サーバーからデータが返されなくても、ユーザー エンティティの列が表示されることを期待していました。私の脳は何が悪いのか理解できないようですので、stackoverflow でクラウドソーシングします。

更新: クエリの結果が型指定された列挙型になることを期待していましたが、DomainDataService のクエリの結果は単に IEnumerable であり、型指定されていないように見えるため、内部ロジックはリストを調べて何を発見する必要があります。含まれているデータの種類。

したがって、更新された質問は次のとおりです: DataGrid に、返されるデータの種類に関するヒントを与えるか、そうでなければ (XAML またはコードを介して) グリッド内の列を自動生成できますか??

4

1 に答える 1

0

あなたの ItemsSource 列挙は型付けされていないと思いますよね?それが単なるオブジェクトのリストである場合、データグリッドはエンティティのパブリック プロパティを見つけられません。

あなたのエンティティ クラスがどのようなものかはわかりませんが、次のコードを試して、私が話していることを確認してください。

どこか:

public class User {
    public string Name { get; set; }
    public int Age { get; set; }
}

Xaml:

 <my:DataGrid x:Name="datagrid"/>

コードビハインド:

public MainPage() {
    InitializeComponent();
    datagrid.ItemsSource = new List<User>();
}

リストは空ですが、ユーザーのリストを使用しているため、データグリッドが列名を選択します。ユーザーの列挙などである可能性があります。

お役に立てば幸いです。

乾杯

編集済み:更新された質問について:コンバーターを使用してみてください。

于 2010-10-11T15:25:25.630 に答える