2009-03-18 12 views
1

私はWPFを初めて使い、必要なものを実装する方法がわかりません。wpf listview/gridview:繰り返し内容を隠す

私の問題:

私は、SQLクエリの結果を表示するデータバインドWPFのGridViewのを持っています。 いくつかの列には、繰り返したいデータを表示しています。 この:.NET 3.5のC#を使用して

occupancy name  room 
--------- --------- ----- 
Occupied Bob  1 
      Ted  2 
Available    3 
         4 

私の環境:

occupancy name  room 
--------- --------- ----- 
Occupied Bob  1 
Occupied Ted  2 
Available    3 
Available    4 

は次のようになります。私はリストビューをデータビューコレクションにバインドしました。私は、セルの書式を制御するためのデータテンプレートを持っています。

マイtenativeソリューション:私はテンプレートにトリガーを適用し、データが前の行と同じです最初の後、すべての行のテキストを空にするためにプロパティを変更する必要があると思った

トリガーをセットアップすると、xamlでこれをすべて実行できますか、前の行にアクセスするコードを記述する必要がありますか?

XAMLの場合、バインドされたデータビューの現在行と前の行の列を参照するバインディング文字列をどのように構築しますか?それは前の行がないので、最初の行で窒息ですか?

ここで私が働いているテンプレートです:

<DataTemplate x:Key="Occupancy"> 
    <TextBlock Name="Occupancy" Text="{Binding Path=Occupancy}" TextAlignment="Left" /> 
    <DataTemplate.Triggers> 
     <DataTrigger Binding="{Binding Path=Occupancy}"> 
      <DataTrigger.Value>Available</DataTrigger.Value> 
      <Setter TargetName="Occupancy" Property="**{previous column's content}**" Value="**{current columns content}**"/> 
     </DataTrigger> 
    </DataTemplate.Triggers> 
</DataTemplate> 

多分RelativeSource使用:PreviousDataは??

コードを書く必要がある場合は、誰かが私を始められるいいチュートリアルを知っていますか?

私は多くの列に適用できるノーコードスタイルが最適な解決策であると考えていますが、代替ソリューションはOKです。

お時間をいただきありがとうございます。

ジェイ

答えて

1

以前のデータオプションは、GridViewが関連付けられていない場合にのみ、ListViewでのみ機能します。これは、ListViewコントロールにフックされたビューでItemsControlコレクションを作成しないためであると考えられます。前のデータを検索するコードは、ItemsControlコレクション内の前の項目をチェックします。しかしこれはちょうど推測です。

2

私はRelativeSource:PreviousDataでマイナスの経験をしています。 ListBoxで動作しましたが、リストビューでエラーが発生しました "生成されたコンテキストに親が存在しないため、RelativeSourceとして使用する前の要素を見つけることができません"

最後に、行番号を印刷するためにそれを使用することでした)。

あなたの状況では、モデルの対応する要素と以前の要素を指すリスト要素を持つModelViewを使用します。したがって、前と現在が対応するプロパティで同じ値を持つ場合、ModelViewの要素はnullを返します。

+0

Sqliteでクエリ結果セットの行番号を返すための組み込み関数を追加しようとしましたが、値が表示されませんでした;)ありがとうございました – Jay

1

私はWPF ListViewの経験はありませんが(私はより基本的なコントロール/コンテナに固執する傾向があります)、最初にLINQクエリで元のデータをグループ化しようと考えたことがありますか?

+0

これはすでにsqlクエリによってグループ化されています。同僚は、繰り返される内容を削除して見出しに入れるだけではずっと簡単だと指摘しました。私はそれをやり遂げるかもしれない。合理的な時間に流れを出すために流れに行きましょう。しかし、提案をありがとう。 – Jay

関連する問題