Мне нужно создать два элемента управления, которые содержат одинаковое количество элементов (динамическое количество), первый элемент управления представляет ключи, а второй представляет значения.
Мне нужно, чтобы, когда пользователь изменяет ширину верхнего столбца, это влияло на тот же столбец в нижнем ряду (значений).
Вот пример того, что я желаю:
<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.
Примечание: это пользовательский элемент управления, поэтому я могу объявить соответствующие свойства при необходимости. но помните, что высота и ширина ячеек должны быть динамическими и индивидуальными для конкретных столбцов / строк.
Что касается этого вопроса, я создал его немного по-другому (имея третий элемент управления для ячеек), но вопрос все тот же, я хочу высоту ширины столбцов и ячеек быть динамичным и дать пользователю возможность изменять их размер, влияя друг на друга.
ОБНОВЛЕНИЕ
ответ дециклона - это то, что я хотел бы реализовать, но я попробовал приведенный им пример, задав для свойства ItemsControl
s 'Grid.IsSharedSizeScope
значение true, но это не сработало, вот результат (обрезано):
Можно ли применить область общего размера между двумя различными элементами управления?