#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, поскольку, похоже, это все, что вам нужно.