У меня есть код, ниже которого я хочу отображать серию кнопок по горизонтали с изображением и текстовой меткой, а под этой строкой кнопок - одна метка для всей группы кнопок. У меня в настоящее время отображаются кнопки в строке, но метка группы отображается в той же строке слева от кнопок. Возможно, я ошибаюсь, но я впечатлен тем, что добрался до этого. Я попытался поместить Child ItemsPanel в StackPanel, но тогда он не показывает никаких кнопок - похоже, он потеряет контакт с коллекцией из родительского окна. Есть ли простой способ подключить эту коллекцию и организовать ярлык под кнопками? Я думаю, что моя следующая попытка - собрать данные от родителя в коде кода ребенка и построить элемент ItemsS, который я затем подключу к ItemTemplate, но я действительно не знаю, как это сделать.Как упорядочить макет ItemsPanel?
Родительское окно сниппет:
<User_Controls:ToolbarGroup GroupLabel="Group 1">
<User_Controls:ImageButton ButtonText="Test 1"/>
<User_Controls:ImageButton ButtonText="Test 2"/>
<User_Controls:ImageButton ButtonText="Test 3"/>
</User_Controls:ToolbarGroup>
окно Детский Код:
<ItemsControl x:Class="Fiducia_WPF.User_Controls.ToolbarGroup"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:User_Controls="clr-namespace:Fiducia_WPF.User_Controls"
mc:Ignorable="d"
Loaded="ItemsControl_Loaded"
d:DesignHeight="170" d:DesignWidth="320">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" Height="170" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<User_Controls:ImageButton ButtonText="Temp"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
<Label Name="lblGroupTitle" Grid.Row="1" Grid.Column="0" Content="Group X" FontSize="16" FontWeight="Bold" Margin="0,0,0,0" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Visible" />
</ItemsControl>
Клеменс: Спасибо за предложение. Вы можете быть на правильном пути, но не устанавливаете контент lblGroupTitle, когда я использую свойство GroupLabel в UserControl: ToolbarGroup. Во-первых, мне пришлось добавить после ControlTemplate>, чтобы получить код для компиляции. Во-вторых, у меня есть свойство GroupLabel за дочерним окном, и у него есть функция набора свойств, которая вызывает var oLabel = this.Template.FindName («lblGroupTitle», this) в качестве метки; но oLabel имеет значение null. Какие-либо предложения? –
См. Отредактированный ответ. – Clemens
Клеменс: Спасибо за ответ. Вероятно, ваше предложение - правильный ответ, но меня это смущает. Однако это дало мне еще одну идею, которая работает. Я предположил, что когда свойство GroupLabel установлено, управление lblGroupTitle еще не существует. Поэтому я сохраняю значение GroupLabel в свойстве класса. Я добавил обработчик событий в событие ItemsControl Loaded, и в этом обработчике событий я могу найти элемент управления lblGroupTitle и установить его текст в свойство GroupLabel. Вероятно, это не лучший способ сделать это, но он работает. Благодарю. –