2013-02-24 11 views
1
나는 ListBoxItem의에서 확장하는 사용자 정의 컨트롤을 만들려고 해요

을에 발생하는 이상한 오류가 발생합니다 있는 ResourceDictionary에서 다음과 같이추가 종속성 속성은 스타일

<Style TargetType="assets:MainNavListBoxItem"> 
     <Setter Property="Padding" Value="3"/> 
     <Setter Property="HorizontalContentAlignment" Value="Left"/> 
     <Setter Property="VerticalContentAlignment" Value="Top"/> 
     <Setter Property="Background" Value="Transparent"/> 
     <Setter Property="BorderThickness" Value="1"/> 
     <Setter Property="TabNavigation" Value="Local"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="assets:MainNavListBoxItem"> 
        <Grid Height="50"> 
         <VisualStateManager.VisualStateGroups> 
... 

을 지금은 컴파일하고 같이 잘 실행하지만, 최대한 빨리이 MainNavListBoxItem 클래스에 추가 종속성 속성을 추가 할 때, 나는 이런 식으로 점점 오류 시작 :

'Padding'텍스트에서 'System.Windows.DependencyProperty'를 만들지 못했습니다.

스타일 내에 Setter 태그를 재 배열하면 항상 맨 위에있는 태그가 표시됩니다.

그리고 참조 내 종속성 속성 코드 : 여기

public ImageSource ImageDark 
{ 
    get { return (ImageSource)GetValue(ImageDarkProperty); } 
    set { SetValue(ImageDarkProperty, value); } 
} 
public static readonly DependencyProperty ImageDarkProperty = 
    DependencyProperty.Register("ImageDark", typeof(ImageSource), typeof(MainNavListBoxItem), new PropertyMetadata(0)); 

을 무슨 일이야?! 스타일 내에서이 ImageDark 종속성 속성을 사용할 수 있기를 원합니다!

이 오류에 대해 많은 검색을 수행했지만이 문제와 관련이없는 것으로 보입니다.

+0

테스트하지 않아도 관련이있는 것은 확실하지 않지만 기본 스타일 키를 지정하는 방법은 비정상입니다. 정적 생성자에서 메타 데이터를 재정의해야합니다. 인스턴스 생성자에서 WPF를 혼동스럽게 할 수 있습니다. 예를 들어 [여기] (http://wpftutorial.net/HowToCreateACustomControl.html)를 참조하십시오. –

+0

실버 라이트에서 메타 데이터를 무시할 수 있습니까? – caesay

+0

죄송합니다. 이것이 WPF라고 생각했습니다. –

답변

4

이 문제는 내 종속성 속성에서 new PropertyMetadata(0)new PropertyMetadata(null)으로 변경하는 것을 잊었 기 때문에 발생했습니다. Kent에게 감사드립니다.