我试图让Windows Phone 7中的用户控件工作。我有几个属性,我想要绑定到,但他们不填充无论我是否将它们添加为DependencyProperties或不。我可以让他们工作的唯一方法就是设置DataContext。我试过的代码是(对于一个属性):Windows Phone - DependencyProperties
public static readonly DependencyProperty MaximumItemsProperty = DependencyProperty.Register("MaximumItems", typeof(int), typeof(ManageIngredientsControl), new PropertyMetadata(0));
/// <summary>
/// Gets or sets the maximum number of items to match.
/// </summary>
/// <value>The maximum number of items to match.</value>
public int MaximumItems
{
get { return Convert.ToInt32(base.GetValue(MaximumItemsProperty)); }
set { base.SetValue(MaximumItemsProperty, value); }
}
<TextBox Grid.Row="1" Grid.Column="1" x:Name="nudMaxIngredients" Width="120" Text="{Binding MaximumItems,Mode=TwoWay,ElementName=root}" InputScope="Number" />
根UserControl元素被称为'root',但该值未被填充。得到一半的工作的唯一方法是通过使用这样的:
public int MaximumItems
{
get { return Convert.ToInt32(DataContext) }
set { DataContext = value; }
}
似乎有什么地方的干扰与DataContext的,但如果我绑定到DependencyProperties它为什么会事?
这可能与DataContext继承有关,但我需要查看其余的视觉hiearchy能够告诉。您可以将Silverlight Spy与WP7一起用于查询可视化树,并查看DataContext在任何时候的用途。输出窗口中是否有任何绑定错误? – 2011-04-19 15:52:27
谢谢,优秀的工具。 datacontext似乎从父视图模型继承,通过用户控件并继续到ta4rget文本框。我仍然不明白为什么它不绑定到依赖项属性。见http://img600.imageshack.us/img600/2835/datactx.th.png – Echilon 2011-04-19 16:25:08