2011-09-08 2 views
0

내 요구 사항은 사용자 지정 UserControl을 팝업으로 표시하는 것입니다. this 메서드를 사용하여 Silverlight/MVVM에서 구현하려고합니다. 하지만 팝업 메뉴에 매개 변수를 전달할 수있는 방법을 찾을 수 없습니다. 내가 달성 this 방법을 통해 갔지만 어떻게 든 작동하지 않습니다. 뷰 1의 버튼문제 XAML에서 매개 변수 전달

동작 : 내 XAML이 어떻게 보이는지

이입니다. 이 버튼의 클릭에, 나는 팝업 뷰 2를 개방하고 있습니다 :

<cmds:PopupBehavior.CustomUI> 
<views:View2 CategoryID="{Binding CategoryID, Mode=TwoWay}"/> 
</cmds:PopupBehavior.CustomUI> 

카테고리 ID가 뷰 2에 대한 종속성 속성과 뷰 1의 뷰 모델에서 동일한 이름의 속성에 바인딩됩니다. 하지만 어떤 이유로 ViewID viewModel에서 제대로 설정되어 있어도 ViewID에서 항상 CategoryID가 0이됩니다.

어디로 잘못 가고 있습니까?

편집 : 속성의 세터는 어떤 이유로

public static readonly DependencyProperty CategoryIDProperty = DependencyProperty.Register 
("CategoryID",typeof(int),typeof(View2),new PropertyMetadata(0)); 

public int CategoryID 
{ 
     get { return (int)GetValue(CategoryIDProperty); } 
     set { SetValue(CategoryIDProperty, value); } 
} 

불리는되지 않습니다 : 여기에

는 뷰 2에 대한 종속성 속성 코드입니다. 이 경우

+0

여기에도 종속 속성 코드를 포함시킬 수 있습니까? 나는 당신이 디버깅을하고 당신의 dp (당신의 dp 속성에서 SetValue의 중단 점)에 전달되는 매개 변수가 0 인지도 확신한다. –

+0

DP 코드를 포함하도록 게시물을 편집했습니다. 그리고 setter는 결코 호출되지 않으므로 DP 등록에서 언급 한 기본값을 사용합니다. – Vinod

+0

내가 생각할 수있는 다음 단계는 바인딩 문제가 있다는 것입니다. 출력 창에서 바인딩 문제가 없는지 확인하고 getter가 뷰 1의 속성에 호출되었는지 확인했다고 가정합니다 ? –

답변

0

이 테스트하고 확인하기 위해 아래에 코드를 변경, 처음보기에 바인딩 문제가 될 수 있어야합니다 당신의 DP의 세터는 지금의 이유를 확인하기 위해 출력 창을 확인 전화를받을

cmds:PopupBehavior.CustomUI> 
    <views:View2 CategoryID="5"/> 
</cmds:PopupBehavior.CustomUI> 

경우 바인드 할 수 없습니다.

+0

위에서 언급했듯이 DP 설정자와 getter는 자신의 코드를 제외하고는 사용되지 않습니다. 실버 라이트는 SetValue와 GetValue를 직접 사용합니다. (이것에 대한 예외는 XAML 파싱 중에 * 호출되는 정적 setter를 가지고 있으므로 첨부 된 종속성 속성입니다.) –

+0

@TBohnen : XAML에서 값을 설정하려고했습니다. 여전히 해당 속성의 값을 설정하지 않습니다. DP 등록, DP 가져 오기 및 설정, DP의 값 변경 이벤트 (HiTechMagic 당 사용됨) 및 뷰 생성자에 중단 점을 넣습니다. 디버그 포인트는 등록 된 다음 생성자에게 직접 전달됩니다. setter는 결코 호출되지 않습니다 .- ( – Vinod

+0

setter는 생성자 다음에 호출 될 것이지만 그때 나는 솔직히 모릅니다. 이상한 일이 일어나고 있습니다. 제가 제안하는 것은 작은 샘플 응용 프로그램을 다시 만들고 시도하는 것입니다. –