0

別の ListView がある単純な ListView があります。内側のリストビューを実際の List<> にバインドできないようです。空と表示されます。

私のコード:

public CollectionViewSource CVSmain {get;set;} //Which is actually a List<MyClassViewModel>, my main ListView bounds to this correctly

public class MyClassViewModel{

    public class MySubClass{
          public string Name{return _name;}
    }

    List<MySubClass> MyList = new List<MySubClass>();
    public string MyText{get;set;}
}

私のXAML:

<ListView DataContext="{Binding CVSmain}" ItemsSource="{Binding}" >
        <ListView.View>
            <GridView>
                <GridViewColumn DisplayMemberBinding="{Binding MyText}" Header="My Text"/>
                <GridViewColumn Header="My List">
                <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <ItemsControl ItemsSource="{Binding MyList}">
                                <ItemsControl.Template>
                                    <ControlTemplate TargetType="ItemsControl">
                                        <ItemsPresenter/>
                                    </ControlTemplate>
                                </ItemsControl.Template>
                                <ItemsControl.ItemsPanel>
                                    <ItemsPanelTemplate>
                                        <StackPanel/>
                                    </ItemsPanelTemplate>
                                </ItemsControl.ItemsPanel>
                                <ItemsControl.ItemTemplate>
                                    <DataTemplate>
                                        <ListView>
                                            <ListView.View>
                                                <GridView>
                                                    <GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name"/>                                                  </GridView>
                                            </ListView.View>
                                        </ListView>
                                        </StackPanel>
                                    </DataTemplate>
                                </ItemsControl.ItemTemplate>
                            </ItemsControl>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>

2 番目の ListView の代わりに、"{Binding Name}" を含む Textblock を配置すると、機能します。この内側の ListView をバインドする方法がわからない場合、何かアイデアはありますか?

ありがとう、

4

2 に答える 2

1

入れ子になったコントロールが 3 つあります。外側の ListView、中央の ItemsControl、内側の ListView です。ItemsControl は不要だと思います。交換してみる

 <ItemsControl ItemsSource="{Binding MyList}"> 
  ...
 </ItemsControl>

 <ListView ItemsSource="{Binding MyList}"> 
     <ListView.View>  
        <GridView>  
            <GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name"/> 
        </GridView>  
     </ListView.View> 
 </ListView>

さらに、変更

List<MySubClass> MyList = new List<MySubClass>(); 

public List<MySubClass> MyList { get; set; }

プライベート フィールドではなく、パブリック プロパティにのみバインドできるためです。

于 2012-06-04T21:05:22.447 に答える
0

MyTextはパブリック プロパティであり、パブリック プロパティであるMyList必要があることに注意してください。

于 2012-06-04T21:06:44.520 に答える