0

データバインディングはまだ私を混乱させており、バインドされたデータごとにこれらのコントロールを本質的に繰り返す方法がわかりません。

   <Grid>
                <TextBlock FontSize="25" Text="this is a header"></TextBlock>
                <TextBlock Height="30" HorizontalAlignment="Left" Margin="19,36,0,0" Name="txt" Text="line under the header" VerticalAlignment="Top" />
                <TextBlock Height="30" FontSize="25" HorizontalAlignment="Left" Margin="306,9,0,0" Name="textBlock2" Text="530" VerticalAlignment="Top" Width="91" />
                <TextBlock Height="30" HorizontalAlignment="Left" Margin="305,42,0,0" Name="textBlock3" Text="30" VerticalAlignment="Top" Width="91" />
            </Grid>

ここに画像の説明を入力

データ ソースのカウントが 50 である場合、これらのグループ化が 50 あると予想されます (スクロール バーが必要になる可能性があります)。

ただし、これを行う方法がわかりません。ある種のデータテンプレートが必要だと思いますか? また、「ヘッダーの下の行」をクリックして強調表示する必要があります。

4

1 に答える 1

0

「ItemsControl」という名前のコントロールを使用する必要があると思います。派生クラスではなく、ListBox ではなく、単なる simpleItemsControlです。

コードまたは XAML で、ItemsControl のItemsSourceプロパティを項目を含む任意のコレクションに設定します。

XAML (VS または Blend のいずれかで、Blend で WYSIWYG を行うには、何らかの方法でデザイン データを提供する必要があります) では、ItemsControlItemTemplateDataTemplate、コレクション内のすべてのアイテムに対して繰り返したい XAML サブツリーを含む に設定します。

内でDataTemplate、「ヘッダーの下の行」を Button コントロールに置き換え、Content="line under the header"必要に応じてスタイルを設定します。CallMethodAction次に、ボタンに追加します。Blendで2回クリックするだけで、最初のクリックは「Assets」ウィンドウにあります。を指定しTargetObject="{Binding}" MethodName="actSubtitleClicked"ます。このようにして、フレームワークはvoid actSubtitleClicked()、ユーザーが「ヘッダーの下の行」をクリックしたアイテムのメソッドを呼び出します。

最高のパフォーマンスを得るには、ItemsControl の ItemsPanel テンプレートも変更して、StackPanel を VirtualizingStackPanel に置き換える必要があります (繰り返しますが、Blend で数回クリックします。最初のクリックは右クリックで、次に「追加のテンプレートの編集 / ItemsPanel / コピーの編集」)。

于 2013-01-27T04:07:37.903 に答える