0

DataTable の値を ObservableCollection にバインドし、項目を ListView にバインドしようとしています。

XAML のようなバインドを行うとItemsSource="{Binding Collection}"、値が表示されませんが、C# コードを使用して値をバインドすると、値が正しく表示されます。

その行動の理由を見つけることができませんでした。解決策を提案してください...

C# コードの場合:

// Declaration of the Observable Collection item.
ObservableCollection<DataTable> _observableCollection = new ObservableCollection<DataTable>();

public ObservableCollection<DataTable> Collection
{
    get { return _observableCollection; }
}

C# コードによるデータのバインド:

lstVw.ItemsSource = Collection;

XAML の場合:

<Grid>
   <ListView Name="lstVw" ItemsSource="{Binding Path=Collection}" Height="auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
       <ListView.View>
          <GridView>
               <GridViewColumn  Header="OrderID" Width="auto" >
                   <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <Button Tag="{Binding OrderID}" Content="{Binding OrderID}"/>
                        </DataTemplate>
                   </GridViewColumn.CellTemplate>
               </GridViewColumn>
               <GridViewColumn Width="auto" DisplayMemberBinding="{Binding CustomerID}" Header="CustomerID" />
               <GridViewColumn Width="auto" DisplayMemberBinding="{Binding ProductID}" Header="ProductID" />
          </GridView>
      </ListView.View>
   </ListView>
</Grid>
4

1 に答える 1

0

問題を解決するには 2 つのオプションがあります。最初に DataContext をウィンドウまたはユーザー コントロールに設定し、次にバインディングで要素名を使用します。

これが2番目の解決策です

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="WpfApplication6.MainWindow"
    x:Name="myWindow"
    Title="MainWindow"
    Width="640" Height="480">

  <Grid>
   <ListView Name="lstVw" ItemsSource="{Binding Path=Collection, ElementName=myWindow}" Height="auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
       <ListView.View>
          <GridView>
               <GridViewColumn  Header="OrderID" Width="auto" >
                   <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <Button Tag="{Binding OrderID}" Content="{Binding OrderID}"/>
                        </DataTemplate>
                   </GridViewColumn.CellTemplate>
               </GridViewColumn>
               <GridViewColumn Width="auto" DisplayMemberBinding="{Binding CustomerID}" Header="CustomerID" />
               <GridViewColumn Width="auto" DisplayMemberBinding="{Binding ProductID}" Header="ProductID" />
          </GridView>
      </ListView.View>
   </ListView>
  </Grid>

</Window>

お役に立てれば

于 2012-04-21T10:31:35.893 に答える