同じ量のアイテム(動的な量)を含む2つのコントロールを作成する必要があります。最初のコントロールはキーを表し、2番目のコントロールは値を表します。
ユーザーが上の列の幅のサイズを変更したときに、(値の)下の行の同じ列に影響を与えるようにするために必要です。
これが私が望むものの例です:
<Window
DataContext="{Binding RelativeSource={RelativeSource Self}}"
x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Window.Resources>
<ItemsPanelTemplate x:Key="ItemsPanelTemplate">
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</Window.Resources>
<StackPanel>
<ItemsControl ItemsSource="{Binding Keys}"
ItemsPanel="{StaticResource ItemsPanelTemplate}"/>
<ItemsControl Grid.Row="1" ItemsSource="{Binding Values}"
ItemsPanel="{StaticResource ItemsPanelTemplate}"/>
</StackPanel>
</Window>
Imports System.Collections.Specialized
Class MainWindow
Private Sub Window_Loaded(ByVal sender As Object,
ByVal e As RoutedEventArgs) Handles MyBase.Loaded
DataContext =
New StringDictionary From
{
{"key1", "value1"},
{"key2", "value2"},
{"key3", "value3"},
{"key4", "value4"}
}
End Sub
End Class
結果:
繰り返しになりますが、セルの境界線をサポートするDataGridのようなコントロールを作成できるようにしたいので、セルの幅と高さを他のコントロールの幅に接続してサイズを変更できるようにする必要があります。
私はそれがxamlyに行われることを好みます。注:これはカスタムコントロールなので、必要に応じて適切なプロパティを宣言できます。ただし、セルの高さと幅は動的で、特定の列/行に対して個別である必要があることに注意してください。
この質問を参照して、少し異なる方法で作成しました(セルの3番目のコントロールがあります)が、質問は同じです。列とセルの高さの幅を動的にし、ユーザーに能力を与えたいです。それらのサイズを変更して、相互に影響を与えます。
アップデート
デサイクロンの答えは私が実装したいものですが、彼が提供した例を試してみましたが、ItemsControl
sのGrid.IsSharedSizeScope
プロパティをtrueに設定しましたが、機能しませんでした。結果は次のとおりです(トリミング)。
2つの異なるコントロール間で共有サイズスコープを適用することは可能ですか?