Пользовательский контроль C # WPF на основе Uniformgrid

#c# #wpf #xaml #uniformgrid

#c# #wpf #xaml #uniformgrid

Вопрос:

Я пытаюсь создать пользовательский элемент управления на основе UniformGrid. При использовании office появляется ошибка: свойство ‘Content’ задается более одного раза

AdaptiveLayout.xaml

 <UserControl x:Class="App.Controls.AdaptiveLayout"
             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:element="clr-namespace:App.Controls"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <UniformGrid SizeChanged="UniformGrid_SizeChanged">
        <ContentPresenter></ContentPresenter>
    </UniformGrid>

</UserControl>
 

MainWindow.xaml

 ...
<controls:AdaptiveLayout TransferringAfter="190">
         <controls:TextBoxWrapControl LabelContent="FirstName"></controls:TextBoxWrapControl>
         <controls:TextBoxWrapControl LabelContent="LastName"></controls:TextBoxWrapControl>
 </controls:AdaptiveLayout>
...
 

Комментарии:

1. Если вы хотите «создать пользовательский элемент управления на основе UniformGrid» и хотите добавить к нему дочерние элементы, вы должны объяснить, почему вы не можете напрямую использовать UniformGrid (вместо вашего элемента управления). Чего именно вы пытаетесь достичь?

2. Элементы становятся плавающими и в то же время растягиваются при изменении ширины содержимого. s3.postimg.org/wc2dqkayb/323.png

3. Вероятно, вам следует создать пользовательскую панель .

Ответ №1:

Вы используете a UniformGrid в своем UserControl, но это на самом деле не превращает его в один. Вот почему в вашем MainWindow.xaml жалуется, что вы установили более одного содержимого для вашего AdaptiveLayout . Вы могли бы попробовать расширить UniformGrid вместо его использования.

Комментарии:

1. Это не колдовство. Просто создайте новый класс, который расширяется UniformGrid так же, как вы бы делали с любым другим классом, использующим наследование. Затем в конструкторе вы можете зарегистрировать свой собственный обработчик событий для события SizeChanged, поскольку, похоже, это все, что вам нужно.