当我运行此代码时,CustomControl中的Item对象变为System.Windows.Data.Binding,其中只包含空值,但DataContext变为MyClass对象(其中填充了Items)
<UserControl x:Name="thisControl">
<Grid x:Name="LayoutRoot">
<ItemsControl ItemsSource="{Binding ElementName=thisControl,Path=Items}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<local:UniformGrid Columns="1"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:CustomControl Item="{Binding}" DataContext="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</UserControl>
我的CustomControl类
public partial class CustomControl : UserControl
{
public CustomControl()
{
InitializeComponent();
}
public object Item { get; set; }
}
有什么我不知道的ItemsControl吗? 这是用Silverlight 4.0编写的
提前致谢!
答案 0 :(得分:0)
您无需尝试分配自定义控件DataContext。 ItemsControl将为您处理。
此外,您的CustomControl
代码需要将Item
属性指定为DependencyProperty
,以使绑定生效。绑定不适用于普通的普通属性。
示例:
public object Item
{
get { return GetValue(ItemProperty); }
set { SetValue(ItemProperty, value); }
}
public static readonly DependencyProperty ItemProperty =
DependencyProperty.Register(
"Item",
typeof(object),
typeof(CustomControl),
new PropertyMetadata(null))
(我认为RSListBoxStopItem
是一个拼写错误,你打算概括为CustomControl
)