我有一个简单的用户控件,它使用一个简单的自定义面板,我只是覆盖了方向和测量功能。
我想要做的是在usercontol中有一个属性来控制方向
所以我基本上有
UserControl
--> Listbox
--> MyPanel
我想要一个usercontrol属性,可以在xaml(类型为System.Windows.Controls.Orientation)中设置,我可以从我的自定义面板绑定(或者如果绑定不是正确的方法,可以使用不同的方法)它)
如果该属性可以显示在属性窗口中,您可以选择垂直或水平,这将是一个奖励。
如果我可以在设计时更改属性并拥有列表框/
,那么这是一个超级奖励答案 0 :(得分:1)
首先,您要为Orientation
添加UserControl
属性: -
public Orientation Orientation
{
get { return (Orientation)GetValue(OrientationProperty); }
set { SetValue(OrientationProperty, value); }
}
public static readonly DependencyProperty OrientationProperty =
DependencyProperty.Register(
"Orientation",
typeof(Orientation),
typeof(YourNewUserControl),
new PropertyMetadata(Orientation.Vertical));
从MyPanel绑定到它的方式是通过UserControl的根元素。为根元素指定一个名称(通常这是Grid
,名称为“LayoutRoot”。
<ListBox ...>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<MyPanel Orientation="{Binding Parent.Orientation, ElementName=LayoutRoot}" />
<ItemsPanelTemplate>
</ListBox.ItemsPanel>
我不知道属性窗口,但这应该可行。