2

この列がExpanderである単一の列を持つListViewを実行する必要があります。

特に私はこのようなクラスを持っています:

public class MyItemT
{
    public string Title { get; set; }
    public TextBlock Info { get; set; }
}

そして、これらのオブジェクトのリスト:

List<MyItemT> Mylist = new List<MyItemT>();

ListViewをExpanderオブジェクトで埋める必要があります。ここで、HeaderはTitleでバインドされ、ContentはInfoプロパティでバインドされています。

たとえば、次のようなExpanderのListView:

<Expander Header="My Expander">
   <TextBlock TextWrapping="Wrap">
      Lorem ipsum dolor sit amet, consectetur
      adipisicing elit, sed do eiusmod tempor incididunt ut
      labore et dolore magna aliqua
   </TextBlock>
</Expander>

私のエキスパンダー

...など(私のListViewの要素があるので多く)...

ListViewにヘッダーバーを含めるべきではありません。もちろん、すべてがプログラムで実行されます。

それはどのように行われるべきですか?ありがとう。

4

1 に答える 1

2

ListViewのItemTemplateを定義し、その中にExpanderを配置するだけです。これは、少なくともListView内の他のコントロールで機能するため、ここでも機能するはずです。

<ListView ItemsSource="{Binding YourSource}" Name="listView">
  <ListView.ItemTemplate>
    <DataTemplate>
      <Expander Header="{Binding Title}">
        <TextBlock TextWrapping="Wrap" Text="{Binding Info}" />
      </Expander>
    </DataTemplate>
  </ListView.ItemTemplate>
</ListView>

バインディングは、このようなコードを介して行うこともできます。

List<MyItemT> Mylist = new List<MyItemT>();
listView.ItemsSource = Mylist;

変更しなければならないことの1つは、Infoプロパティの型であり、文字列型である必要があります。

ああ、クラスはを実装する必要がありますINotifyPropertyChanged。そうしないと、バインディングが常に正しく機能するとは限りません。

于 2012-05-07T17:31:00.067 に答える