2014-11-03 1 views
3

저는 C#을 처음 사용하고 xaml UserControl 개체의 매개 변수 사용에 대한 질문이 있습니다.C# XAML WPF UserControl에서 렌더링하기 전에 매개 변수 사용

내가 XAML에서 내 MainGrid/주 창에서 UserControll "하여 ImageButton을"정의 :

<local:ImageButton HorizontalAlignment="Left" Height="100" Margin="49,122,0,0" VerticalAlignment="Top" Width="100" sText="SomeText" sType="main_button" Source="Resources/main_button.png" /> 

을 다른 측면에서 난 내 ImageBButton.xmal.cs이

public partial class ImageButton : UserControl 
..... 
public ImageSource Source 
{ 
    get { 
     return (ImageSource)GetValue(SourceProperty); } 
     set { SetValue(SourceProperty, value); } 
    } 
..... 
public static readonly DependencyProperty SourceProperty = DependencyProperty.Register("Source", typeof(ImageSource), typeof(ImageButton), new UIPropertyMetadata(default(ImageSource))); 
..... 
public ImageButton() 
{ 
    InitializeComponent(); 
} 
..... 

지금은 것 어떤 시점에서 내가 xaml에 정의한 매개 변수 값을 통해 액세스 할 수 있는지 알고 싶습니다.

나는 (Constructor 자체를 포함한) 여러 방법을 시도했지만, C# 코드의 빈 값만 받았다. 여러 가지 방법을 시도 했으므로 이제 "OnRender"메서드를 사용합니다.이 메서드에서는 xaml에서 매개 변수 값에 액세스 할 수 있습니다.

하지만 난이 올바른 방법 인 경우 정말 확실 해요는 ..

월 누군가가 내가 XAML의 parametervalues에 액세스하고 몇 가지를 처리 ​​할 수있는 Usercontroll의 그리기 전에 다른 방법을 알고?

친절 InitializeComponent()에서 처리됩니다 UserControl을 자신의 XAML에 선언

+1

일반적으로 [PropertyChangedCallback] (http://msdn.microsoft.com/en-us/library/system.windows.propertychangedcallback.aspx) 속성 메타 데이터를 등록하십시오. – Clemens

+1

'로드 된'이벤트에 핸들러를 연결하려면이 시점에서 핸들러를 초기화해야합니다. – user2697817

답변

2

속성 값을 간주한다. Initialized이 제기 된 후 UserControl의 Xaml 사용 사이트에서 제공되는 값을 사용할 수 있습니다.

바인딩은 약간 다릅니다. 바인딩이 적용되고 위의 규칙에 따라 값을받을 준비가되지만 발송자가 DataBind 우선 순위의 항목을 처리 할 수있을 때까지 원본 값이 대상으로 전송되지 않을 수 있습니다. 제어가 Loaded 일 때까지이 작업이 수행됩니다.