2012-04-19 2 views
1

나는 WCF 기상 서비스에서 Silverlight의 DataGrid로받는 데이터를 바인딩합니다. 나는 7 일 예측의 반환을 얻는다. 내가 가지고있는 문제는 반환이 컬렉션이며,이 컬렉션에는 온도와 강수 확률이 또 다른 한 단계 깊숙이 있다는 것입니다. 기온은 높고 낮고 강수 확률은 낮과 밤에 있습니다.Silverlight를 사용하여 동적 데이터 용 사용자 지정 변환기 만들기

namespace MyProject 
{ 
public partial class MainPage : UserControl 
{ 

    WeatherSoapClient weatherClient = new WeatherSoapClient(); 

    public MainPage() 
    { 
     InitializeComponent(); 

     weatherClient.GetCityWeatherByZIPCompleted += new EventHandler<GetCityWeatherByZIPCompletedEventArgs>(weatherClient_GetCityWeatherByZIPCompleted); 
    } 

여기는 데이터 수집의 소스를 Forecast Collection에 설정합니다.

void weatherClient_GetCityForecastByZIPCompleted(object sender, GetCityForecastByZIPCompletedEventArgs e) 
    { 
     this.dataGrid1.ItemsSource = e.Result.ForecastResult; 

    } 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     weatherClient.GetCityForecastByZIPAsync(inputZip.Text); 
    } 
} 
} 

그리고이 같은 데이터 그리드 모양에서 얻는 결과 : http://i.stack.imgur.com/9W67v.jpg

당신은 내가 표시 할 것입니다 무슨 아니라고 온도 및 POP에서 볼 수 있듯이. C#에 익숙하지 않은 나는 현재 시점에 도달하는 데 어려움을 겪었습니다. 이제 누군가는 사용자 정의 변환기를 작성하여 드릴 다운하도록 제안했습니다. 나는 이것을하는 방법을 확신하지 못한다. 어떤 도움이라도 대단히 감사하겠습니다. 바라기를 나는 당신이 볼 필요가있는 모든 것을 보여줍니다.

답변

1

데이터 표에서 AutoGenerateColumns에서 False으로 설정 한 다음 직접 열 유형을 정의해야합니다 (인터넷에서이 작업을 수행하는 방법에 대한 정보가 충분 함).

첫 번째 몇 열의 경우 DataGridTextColumn이 좋습니다.

마지막 두 사람은 DataGridTemplateColumn을 사용하고 싶습니다. 열의 DataTemplate에서는 두 개의 TextBlock을 각각 다른 속성에 바인딩 할 수 있습니다. 예를 들어

:

<data:DataGrid AutoGenerateColumns="False"> 
    <data:DataGrid.Columns> 

     <data:DataGridTextColumn Header="Date" 
           Binding="{Binding Date}" /> 

     <data:DataGridTextColumn Header="ID" 
           Binding="{Binding WeatherID}" /> 

     <data:DataGridTemplateColumn Header="Temperature"> 
     <data:DataGridTemplateColumn.CellTemplate> 
      <DataTemplate> 
      <StackPanel> 
       <TextBlock Text="{Binding Temperatures.High}" /> 
       <TextBlock Text="{Binding Temperatures.Low}" /> 
      </StackPanel> 
      </DataTemplate> 
     </data:DataGridTemplateColumn.CellTemplate> 
     </data:DataGridTemplateColumn> 
    </data:DataGrid.Columns> 
</data:DataGrid> 
+0

감사합니다 롭. 나는 이것을 시험해보고 그것이 효과를 볼 수 있는지 알아볼 것입니다. 첫 번째 부분에 관해서는 당신이 말하는 내용에 대한 코드 스 니펫을 표시 할 수 있거나 일부 참조에 대한 링크까지 표시하는 것이 좋습니다. 나는 기본적으로 C#과 OOP가있는 완전한 초보자이며 Actionscript가 조금있다. 그래서 이것은 조금 혼란 스럽습니다. 다시 한번 감사드립니다! – Fogolicious

+0

필자는 대답의 예제를 좀 더 포괄적으로 업데이트했습니다. – RobSiklos

+0

정말 고마워요! 나는 분명히 이것을 시도하고 결과가있을 때 돌아올 것입니다. – Fogolicious

관련 문제