1

WCF 気象サービスから受信したデータを Silverlight のデータグリッドにバインドしています。私は7日間の予報を返します。私が抱えている問題は、リターンがコレクションであり、このコレクションには別のレベルの温度と降水確率があることです。気温には最高と最低があり、降水確率には昼と夜があります。

namespace MyProject
{
public partial class MainPage : UserControl
{

    WeatherSoapClient weatherClient = new WeatherSoapClient();

    public MainPage()
    {
        InitializeComponent();

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

これは、データグリッドのソースを予測コレクションに設定しているところです。

    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

ご覧のとおり、Temperature と POP の下にあるのは、私が表示したいものではありません。C# を初めて使用する私は、今いるポイントにたどり着くのに苦労しました。今、誰かが、より深くドリルダウンするためのカスタム コンバーターを作成することを提案しました。これを行う方法がわかりません。どんな助けでも大歓迎です。うまくいけば、私はあなたが見る必要があるすべてを示します.

4

1 に答える 1

1

データ グリッドに設定AutoGenerateColumnsしてからFalse、自分で列の種類を定義する必要があります (インターネットでこれを行う方法に関する多くの情報)。

最初の数列DataGridTextColumnは問題ありません。

最後の 2 つはDataGridTemplateColumn. 列のDataTemplateには、それぞれ異なるプロパティにバインドする 2 つの TextBlocks を配置できます。

例えば:

<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>
于 2012-04-19T01:52:38.297 に答える