3

Windows Phone 7에서 작동하는 UserControl을 얻으려고합니다. 제가 바인딩하려는 몇 가지 속성을 가지고 있지만, DependencyProperties 또는 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을 요소는 '루트'라고하지만, 값이 채워지지 않습니다. 이 반 작업을 얻을 수있는 유일한 방법은이를 사용하는 것입니다 :

public int MaximumItems 
{ 
    get { return Convert.ToInt32(DataContext) } 
    set { DataContext = value; } 
} 

그것은 뭔가 DataContext를 방해,하지만 내가 DependencyProperties에 결합하고있어 경우에 왜 중요 할 것 같다?

+0

아마도 DataContext 상속과 관련이 있을지 모르지만 나머지 시각적 인사말을 통해이를 알 수 있어야합니다. WP7에서 Silverlight Spy를 사용하여 시각적 트리를 조사하고 언제든지 DataContext가 무엇인지 확인할 수 있습니다. 출력 창에 바인딩 오류가 있습니까? –

+0

감사합니다. 훌륭한 도구입니다. datacontext는 상위 ViewModel에서 usercontrol을 통해 ta4rget 텍스트 상자까지 상속 된 것처럼 보입니다. 나는 아직도 그것이 의존적 인 속성에 묶이지 않는 이유를 이해하지 못한다. http://img600.imageshack.us/img600/2835/datactx.th.png – Echilon

답변

2

TextBox가 UserControl 안에 있다고 생각합니다. 그렇다면 here과 같이 ElementName 바인딩에 문제가 있습니다.

기본적으로 XAML에서 UserControl에 지정한 이름은 사용 된 곳 (예 : 페이지)에있는 모든 이름으로 덮어 씁니다. 이 LayoutRoot가있는 UserControl의 XAML 내부의 루트 컨트롤입니다

<TextBox Grid.Row="1" Grid.Column="1" x:Name="nudMaxIngredients" Width="120" Text="{Binding Parent.MaximumItems,Mode=TwoWay,ElementName=LayoutRoot}" InputScope="Number" /> 

:

해결 방법은 같은 것을 사용하는 것입니다.

또한 MaximumItems 속성에 대한 첫 번째 접근법이 정확합니다.

+0

지원이 부족하거나 버그가 아니라는 것을 알면 다행입니다. 감사. – Echilon