2012-03-26 4 views
5

내 모델, 뷰 모델 및 뷰가 포함 된 C# 컨트롤 라이브러리가 있습니다. 내가 일반적으로하는 것처럼 모든 것을 연결하지만 Visual Studio의 디자이너 (혼합 성)로부터 디자인 타임 피드백을 얻지는 않습니다.시각적 스튜디오의 디자이너가 디자인 타임 지원을 시작하게하는 이유

WPF 프로젝트에서 assambly를로드하고 사용자 정의 컨트롤로 뷰를 포함하면 디자인 타임 피드백을 받게됩니다. 불행히도이 WPF 프로젝트는 뷰가 다른 앱에 살기 때문에 테스트 셸일뿐입니다.

내 클래스 라이브러리에서 혼합 가능성 (디자인 타임)을 지원할 수 있다면 내 dev 파이프 라인에 더 효율적일까요? 시각 디자인 스튜디오에서 내 디자인 타임 데이터를 표시하려면 무엇이 필요합니까?

심지어 내 클래스 라이브러리에 d:DataContext="{d:DesignInstance dd:DesignViewModel}"을 사용합니다. 클래스 라이브러리에 디자인 타임 데이터가 없습니다.

+0

편집기에서보기를 수동으로 열 수 있습니까? 마우스 오른쪽 버튼을 클릭하고 "Windows Presentation Designer"를 엽니 다. 클래스 라이브러리에서 XAML 파일을 두 번 클릭하면 디자이너가되므로 왜 그럴 수 있는지 확신 할 수 없기 때문에 묻습니다. –

+0

그래, xaml 파일이로드되었지만 디자인 타임 데이터 (mockdata로 연결된 DataContext)로 게시되지 않았습니다. Xaml 응용 프로그램으로 열 때처럼 – silverfighter

+0

특정 mvvm 프레임 워크를 사용하고 있습니까? –

답변

5

d:DataContext="{d:DesignInstance dd:DesignViewModel, IsDesignTimeCreatable=True} 

너무 당신을 도울 수있는 블로그 here있다보십시오.

+0

그 트릭을 ... 고마워 ... 내가 가까이 =) ... 도와 줘서 고마워! – silverfighter

0

WPF 디자이너를 기쁘게하기 위해 항상 내 viewmodels 용 빈 생성자를 만들거나 파생 클래스를 만드는 것이 정말 실망 스럽습니다. 예를 들어, 디자인 타임보기 모델의 인스턴스를 노출하는 정적 속성을 사용하고 있습니다 (단 비주얼 스튜디오 2013에서 테스트) 나를 위해 작동

하나 개의 솔루션

C# 코드

namespace WpfApplication2 
{ 
    public class Person 
    { 
     public Person(string id) 
     { 
      Id = id; 
     } 

     public string Id { get; private set; } 
    } 

    public static class DesignViewModels 
    { 
     public static Person Person 
     { 
      get { return new Person("Design time person id"); } 
     } 
    } 
} 

및 XAML

<Window x:Class="WpfApplication2.MainWindow" 
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
       xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
       xmlns:my="clr-namespace:WpfApplication2" 
       mc:Ignorable="d" 
       Title="MainWindow" Height="350" Width="525"> 
    <d:DesignProperties.DataContext> 
     <x:Static Member="my:DesignViewModels.Person" /> 
    </d:DesignProperties.DataContext> 
    <TextBlock Text="{Binding Id}"/> 
</Window>