2017-08-29 8 views
1

はどのようにDataGridCollectionViewSourceのソースとして(Expression Blendの中で生成された)生成されたサンプル・データ・ソースを使用できますか?出来ますか?エクシードDataGridCollectionViewSource

<xcdg:DataGridCollectionViewSource x:Key="cvsSample" 
            Source="{Binding Source={x:Static Application.Current},Path=SampleDataSource}"/> 

エラーをスローし、これを行う:

A value of type 'DataGridCollectionViewSource' cannot be added to a collection or dictionary of type 'UIElementCollection'.

を、私はそうのようなDataGridControlで直接設定することができます

<xcdg:DataGridControl ItemTemplate="{DynamicResource ItemTemplate}" 
         ItemsSource="{Binding Collection, Source={StaticResource SampleDataSource}}" 
         UpdateSourceTrigger="CellContentChanged" 
         Margin="10"> 
    </xcdg:DataGridControl> 

しかし、私はそれはあなたがすることを可能にするようDataGridCollectionViewSourceを使用したいですフィルタリング、グループ化などの機能を使用します。

+0

どこでcvsSampleリソースを定義していますか?そして、Application.Current.SampleDataSourceは何を返しますか?タイプは何ですか? – mm8

+0

cvsSampleはDataGridControlのすぐ上に定義されていましたが、今度はUserControl.Resourcesに入れます。これはエラーを修正するようですが、データグリッドはデータを表示しません.. SampleDataSourceはxamlです。これにはxaml/xsdが含まれています。私は推測している(申し訳ありませんnoob)それはすべてのアイテムが格納されているので、xamlを返しています。 XAMLは次のようになります。 \t \t '' –

答えて

1

このお試しください:

enter image description here

XAML:

<Window x:Class="WpfApp1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid" 
     xmlns:local="clr-namespace:WpfApp1" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <xcdg:DataGridCollectionViewSource x:Key="cvsSample" Source="{Binding}" /> 
    </Window.Resources> 
    <Grid> 
     <xcdg:DataGridControl ItemsSource="{Binding Source={StaticResource cvsSample}}"/> 
    </Grid> 
</Window> 

CS:jstreetの答えで

using Xceed.Wpf.Samples.SampleData; 

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 

     DataContext = SampleDataProvider.GetProducts(); 
    } 
} 
+0

はよさそうだが、どこで、 "SampleDataProvider" を手に入れました?私はXceed.Products.Wpf.DataGrid.Fullを取得しており、認識されていません。私はサンプルパッケージのいくつかの種類を探してみましたが、何も見つからないようです。 サンプルプロジェクトの1つで見つかった_Xceed.Wpf.DataGrid.Samples_を使用してみましたが、_Samples_が名前空間_Xceed.Wpf.DataGrid_に存在しないことが示されています。私は何が欠けていますか?私はそれを見つけることができません.. –

+0

さて、私はついにそれを働かせました!私はあなたのように正確にはしませんでしたが、SampleDataProviderを見つけることができれば、あなたのソリューションは素晴らしいもののように見えます。私は、Xceed.Wpf.DataGrid.Samples.SampleDataへの参照を追加していないことに気付きました(隣にある小さなボックスをチェックしてください)。以下のコードを誰かのために投稿します。 ありがとうございます! :) –

+0

@HjalteTagmose:あなたは大歓迎です!しかし、覚えておいてください:私たちが言っている方法**は、ここであなたに**ありがとうございました。それは有益な答えを投票することです:O)見てください(https://stackoverflow.com/help/someone-answers)。 – jsanalytics

1

ルックを、それならばあなたのために働いていない、あなたは私がやったことをやってみることができます。

は、Visual Studioで参考>拡張を追加> プロジェクトに移動し、追加Xceed.Wpf.DataGrid.Samples.SampleData(その横に小さなボックスをチェックすることを忘れないでください)。

App.xaml.cs

public partial class App : System.Windows.Application 
{ 
    protected override void OnStartup(StartupEventArgs e) 
    { 
     Xceed.Wpf.DataGrid.Licenser.LicenseKey = "XXXXX-XXXXX-XXXXX-XXXX"; 

     DataSet musicDataSet = Xceed.Wpf.DataGrid.Samples.SampleData.DataProvider.GetMusicLibraryDataSet(); 
     m_songs = musicDataSet.Tables["Songs"]; 

     base.OnStartup(e); 
    } 

    private DataTable m_songs; 

    public DataTable Songs 
    { 
     get 
     { 
      return m_songs; 
     } 
    } 
} 

MainWindow.xaml

<Window.Resources> 
    <xcdg:DataGridCollectionViewSource x:Key="cvsSongs" 
            Source="{Binding Source={x:Static Application.Current},Path=Songs}"> 
    </xcdg:DataGridCollectionViewSource> 
</Window.Resources> 

<Grid> 
    <xcdg:DataGridControl ItemsSource="{Binding Source={StaticResource cvsSongs}}"/> 
</Grid> 

...私はずっとちょうど参照を逃しているために、これを苦労信じることができません