2010-04-26 2 views
13

4.0 계열 WPF 도구의 새로운 d : DesignInstance 기능을 사용하고 있습니다. 위대한 작품!XAML에서 d : DesignInstance의 속성을 설정하는 방법?

유일한 문제 : 인스턴스에서 속성을 설정하려면 어떻게해야합니까? 이 같은 감안할 때 뭔가 :

<Grid d:DataContext="{d:DesignInstance plugin:SamplePendingChangesViewModel, IsDesignTimeCreatable=True}"/> 

어떻게 기본의 ctor에서 그들을 설정하거나 다른 객체 이니셜 라이저를 통해 라우팅 제외하고, 뷰 모델에 속성을 설정할 수 있습니다?

나는이 시도하는 듯했으나 VS 컴파일에 오류가 있습니다 "D를 : DataContext를 찾을 수 없습니다"의 DataContext = {: 나는 자원 및 'D를 사용하여 다시거야 순간

<Grid> 
    <d:DataContext> 
     <d:DesignInstance IsDesignTimeCreatable="True"> 
      <plugin:SamplePendingChangesViewModel ActiveTagIndex="2"/> 
     </d:DesignInstance> 
    </d:DataContext> 

StaticResource SampleData} ', 여기서 리소스의 속성을 설정할 수 있습니다.

d : DesignInstance를 통해 수행 할 수있는 방법이 있습니까?

+0

당신은이에 하나 : 1. 기본 ctor에 또는 2를 사용하여 D : [DesignData] (http : //msdn.micros oft.com/en/us/library/ee823176.aspx) 대신 d : DesignInstance –

+0

이것은 예외입니다 (이 대답을 검색하는 데 유용합니다) : 오류 'd : DataContext'유형을 찾을 수 없습니다. 어셈블리 참조가 누락되지 않았는지, 참조 된 모든 어셈블리가 빌드되었는지 확인하십시오. –

답변

22

@jberger로 d:DataContext을 인라인하는 대신 d:DesignData을 사용해야합니다. 당신은 D 설정할 수 있습니다 그러나

:뿐만 아니라 XAML 파일에서 DataContext를 인라인, 비밀은 d:DataContext 재산 자격을 올바른 클래스 (DesignProperties)를 사용하는 것입니다 :

<d:DesignProperties.DataContext> 
    <plugin:SamplePendingChangesViewModel ActiveTagIndex="2"/> 
</d:DesignProperties.DataContext> 

는 어떻게 알 수 있습니까 무엇 클래스 자격을 얻으려면? 속성 구문에 설정된 속성 위로 마우스를 가져 가면 툴팁에 정규화 된 속성 이름이 나타납니다.

특별히 마크 업 익스텐션을 작업으로 사용하지 않는 경우 이름을 제공하거나 (디자인 타임에 인스턴스화 할 수없는 경우 해당 유형의 프록시를 생성하는) 유형의 인스턴스를 만드는 것이 좋습니다. . 우리가 원하는 바가 아니기 때문에이 경우 인라인 xaml에 인스턴스를 정의하고 싶습니다.

사실, d:DesignData (마크 업 확장자)은 xaml 파일을 찾고 기본 생성자를 사용하는 대신 실제 인스턴스로 deserialize한다는 점을 제외하고는 거의 동일한 방식으로 작동합니다.

그냥 완성도 나 또한 당신이 그들의 전체 클래스 이름 (xxxExtension)를 사용하여뿐만 아니라 요소 구문과 DesignData 및 DesignInstance를 사용할 수 있음을 언급한다 :

<d:DesignProperties.DataContext> 
    <d:DesignDataExtension Source="SampleData.xaml"></d:DesignDataExtension> 
</d:DesignProperties.DataContext> 

이것은 대부분의 마크 업 exstensions하지만하지 않는 사실이다 (바인딩 클래스는 주목할만한 예외이다)이 명명 convension를 수행하는 데 필요한 더 많은 정보는 여기에서 찾을 수 있습니다 :

Markup Extensions and WPF XAML

관련 문제