Пользовательский элемент управления C#, который может содержать другие элементы управления (при его использовании)
Я нашел что-то об этой проблеме для ASP, но это мне не очень помогло ...
Я хотел бы сделать следующее: Я хочу создать пользовательский элемент управления, который имеет коллекцию как свойство и кнопки для навигации по этой коллекции. Я хочу иметь возможность привязать этот пользовательский элемент управления к коллекции и отображать на нем различные элементы управления (содержащие данные из этой коллекции). Например, что у вас было в MS Access на нижнем краю формы ...
более точное:
когда я фактически использую элемент управления в своем приложении (после его создания), я хочу иметь возможность добавлять к нему несколько элементов управления (текстовые поля, метки и т. д.) Между <myControly>
и </mycontrol>
Если я сделаю это сейчас, элементы управления моего пользовательского элемента управления исчезнут.
4 ответов
вот пример один из способов сделать то, что вы хотите:
во - первых, код-UserControl1.код XAML.cs
public partial class UserControl1 : UserControl
{
public static readonly DependencyProperty MyContentProperty =
DependencyProperty.Register("MyContent", typeof(object), typeof(UserControl1));
public UserControl1()
{
InitializeComponent();
}
public object MyContent
{
get { return GetValue(MyContentProperty); }
set { SetValue(MyContentProperty, value); }
}
}
и XAML - UserControl1 пользовательского элемента управления.в XAML
<UserControl x:Class="InCtrl.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300" Name="MyCtrl">
<StackPanel>
<Button Content="Up"/>
<ContentPresenter Content="{Binding ElementName=MyCtrl, Path=MyContent}"/>
<Button Content="Down"/>
</StackPanel>
</UserControl>
и, наконец, xaml для использования нашего замечательного нового элемента управления:
<Window x:Class="InCtrl.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:me="clr-namespace:InCtrl"
Title="Window1" Height="300" Width="300">
<Grid>
<me:UserControl1>
<me:UserControl1.MyContent>
<Button Content="Middle"/>
</me:UserControl1.MyContent>
</me:UserControl1>
</Grid>
</Window>
мне трудно понять ваш вопрос, но я думаю, что то, что вы описываете-это ItemsControl
используя DataTemplates
для отображения содержимого (предположительно)ObservableCollection (T).
UserControl может быть не лучшим способом сделать это. Вы хотите добавить украшения вокруг контента, что в основном и делает Border: у него есть дочерний элемент, и он добавляет свой собственный материал по краям.
посмотрите в класс декоратора, из которого происходит граница. Если вы сделаете свою собственную границу потомком, вы легко сможете делать то, что хотите. Однако я считаю, что это потребует написания кода, а не XAML.
вы все еще можете сделать UserControl для обертывания кнопок внизу, чтобы вы могли использовать визуальный конструктор для части процесса. Но декоратор был бы хорошим способом склеить части вместе и обеспечить определяемый пользователем контент.
здесь ссылке к встроенному управлению (HeaderedContentControl
), который делает то же самое, что и принятый ответ, за исключением того, что это существующий элемент управления в WPF с .Net 3.0