2011-02-15 17 views
0

一連の日付に動的にバインドするリストビューを作成しようとしています。したがって、ユーザーは日付範囲を選択でき、選択した日付の結果は列ヘッダーの日付とともに表示されます。私はそれがすべて1つの問題を扱っている、日付はヘッダーに表示されません。WPF LIstView列ヘッダーへのバインド

public class KPIResult : DependencyObject 
{ 
    public static readonly DependencyProperty DateProperty = DependencyProperty.Register("Date", typeof(DateTime), typeof(KPIResult), new UIPropertyMetadata(null)); 

    public DateTime Date 
    { 
     get { return (DateTime)GetValue(DateProperty); } 
     set { SetValue(DateProperty, value); } 
    } 

    public static readonly DependencyProperty ResultProperty = DependencyProperty.Register("Result", typeof(int), typeof(KPIResult), new UIPropertyMetadata(null)); 

    public int Result 
    { 
     get { return (int)GetValue(ResultProperty); } 
     set { SetValue(ResultProperty, value); } 
    } 
} 

そして、リストビューのためのコード:

<ListView Margin="6" ItemsSource="{Binding ElementName=This, Path=KPICollection}" Name="lvKPIView" Grid.ColumnSpan="2"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Width="40" > 
        <GridViewColumnHeader Tag="KPIResult[0]" Content="{Binding Path=KPIResults[0].Date}" /> 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <Grid> 
           <TextBlock Text="{Binding Path=KPIResults[0].Result}" /> 
           <TextBox Text="{Binding Path=KPIResults[0].Result}" /> 
          </Grid> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
       </GridViewColumn> 
      </GridView> 
     </ListView.View> 
    </ListView> 

結果がうまく表示されて、私はそれが動作しない理由を何らかの理由を見ることができない、次のを持っています。 :(ヘッダーにちょうど何の日付

すべてのアイデアみんな

乾杯、 SumGuy

答えて

4

この方法試してみてください。?どうやら

<ListView Margin="6" DataContext="{Binding ElementName=This}" ItemsSource="{Binding KPICollection}" Name="lvKPIView" Grid.ColumnSpan="2"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Width="40" > 
       <GridViewColumnHeader Tag="KPIResult[0]" Content="{Binding KPICollection.KPIResults[0].Date}" /> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <Grid> 
          <TextBlock Text="{Binding Path=KPIResults[0].Result}" /> 
          <TextBox Text="{Binding Path=KPIResults[0].Result}" /> 
         </Grid> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 

を、問題はあなたがバインドしようとしているということではありませんバインディングソースを指定せずに、コントロールのDataContextを何も設定せずにプロパティに追加することができます。内部のバインディングが動作するのは、行のデータコンテキストが自動的に対応するアイテムインスタンスを一覧表示しますが、これはヘッダーには当てはまりません。親コントロールからデータコンテキストを継承します。したがって、ListViewDataContextを指定した場合、ヘッダーで使用されるバインディングは、そのデータコンテキストへの相対パスを持ちます。{Binding KPICollection.KPIResults[0].Date}

関連する問題