2009-09-16 1 views
0

MS Expression Blend를 사용하면 XML 파일에서 예제 데이터를 가져와 XAML 및 바인딩을 디자인 모드로 테스트하는 데 사용할 수 있습니다. 내 데이터 모델은 Entity Framework를 사용하여 XML로 완전히 정의됩니다. 블렌드 샘플 데이터의 소스로 직접 또는 간접적으로 해당 모델을 사용하는 합리적인 방법이 있습니까? 이것은 꽤 명백한 유스 케이스 인 것처럼 보이지만 이것을 수행하는 방법에 대한 샘플을 찾지 못했습니다. 내 EF 클래스의 인스턴스를 XML로 직렬화하는 유틸리티를 작성하는 유일한 방법입니까?Blend 용 샘플 XML 데이터를 Entity Framework 데이터 모델에서 생성 하시겠습니까?

(Silverlight w/WCF를 사용하고 있고 데이터 모델이 자동 생성 된 프록시 클래스이므로 라이브 데이터 소스에 연결할 수 있다고는 생각하지 않습니다.) 블렌드를 연결하는 방법이 있다면 WCF 서비스에 대해서는 아직 찾지 못했습니다. 일부 포인터를 얻게되어 기쁩니다.)

답변

0

여전히 좋은 답변이 없습니다.

DataContractSerializer serializer = new DataContractSerializer(typeof(Room)); 
using (SlideLincEntities ctx = new SlideLincEntities()) 
{ 
    Room roomWithMostSessions = ctx.Room 
     .OrderByDescending(r => r.Sessions.Count) 
     .FirstOrDefault(); 
    string fileName = ConfigurationSettings.AppSettings["outputFile"]; 
    Console.WriteLine("Writing data to file '{0}'", fileName); 
    File.Delete(fileName); 
    using (Stream fileStream = File.Open(fileName, FileMode.OpenOrCreate)) 
    { 
     serializer.WriteObject(fileStream, roomWithMostSessions); 
    } 
} 

불행하게도, 혼합 생성 된 XML을 읽을 수 없습니다 : 나는 DataContractSerializer 사용하여 XML로 내 EF 클래스의 일부 인스턴스를 직렬화 시도 DataContractSerializer 분명히 블렌드의 단순한 XML 디시리얼라이저를 혼란 XML 심판 표기법을 사용합니다.

는 또한 XAML의 객체 표기법을 사용하여 손 (uggh)에 의해 샘플 데이터를 생성 시도 :

<rs:Room d:IsDataSource="True" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:rs="clr-namespace:SlideLinc.Client.Common.RoomService;assembly=SlideLinc.Client.Common" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
mc:Ignorable="d" 
Name="_default" OwnerId="smithkl42" 
> 
    <rs:Room.Owner> 
     <rs:RegisteredUser x:Name="ken" UserId="ken" Email="[email protected]" FirstName="Ken" LastName="Smith" MaxFileUploadSize="20000" UserName="Ken Smith" /> 
    </rs:Room.Owner> 
</rs:Room> 

이 더 있었다, 그러나 어떤 이유로, 혼합은 객체 내의 컬렉션에 바인딩 할 것이다 : 나는 돈 왜 XAML 데이터 바인딩 오류가 자동으로 삼키는 지 이유 때문에 알지 못합니다. (내가 XAML 데이터 바인딩을 얼마나 싫어하는지 언급 한 적이 있습니까?)

나는 결국 직선 조인트 XAML 양식 내에서 소량의 데이터를 정의와 함께 갔다 :

<ListBox x:Name="fileListBox" Grid.Row="2" Margin="4" BorderThickness="0" > 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Grid > 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="25" /> 
        <ColumnDefinition Width="150"/> 
        <ColumnDefinition Width="70" /> 
        <ColumnDefinition Width="5" /> 
        <ColumnDefinition Width="30" /> 
       </Grid.ColumnDefinitions> 
       <Image Source="/Images/Word.png" Grid.Column="0" Margin="2" /> 
       <TextBlock Text="{Binding OriginalFileName}" Grid.Column="1" VerticalAlignment="Center" /> 
       <HyperlinkButton Content="Share" Grid.Column="2" Margin="4" HorizontalAlignment="Right" VerticalAlignment="Center"/> 
       <HyperlinkButton Grid.Column="4" Margin="4" HorizontalAlignment="Right" VerticalAlignment="Center" > 
        <Image Source="/Images/trashcan.png" Width="25" /> 
       </HyperlinkButton> 
      </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
    <!-- I shouldn't have to do this, but for some reason, I can't get sample data any other way --> 
    <roomservice:SharedFile OriginalFileName="Some Document.docx" /> 
    <roomservice:SharedFile OriginalFileName="Another document.pptx"/> 
</ListBox> 

는 그래서 나의 현재의 접근 방식입니다. 매우 우아하지 않습니다. 다른 아이디어를 열어 라.

관련 문제