1

リストボックスにユーザーテンプレートがあるリストボックスにソースとしてカスタムオブジェクトのリストをバインドしようとしています

    <DataTemplate x:Key="UserTemplate1" >
      <StackPanel Orientation="Horizontal">
        <TextBlock  Name="vmname" Text="{Binding }" Width="100"/>
        <CheckBox Name="cb" IsChecked="{Binding ischeck}"/>
       </StackPanel>
    </DataTemplate>

このテンプレートをリストボックスのデータ型として使用しました

      <ListBox Name="listbox3" Visibility="Hidden" Height="134" Width="156" Margin="515,82,62,104" IsSynchronizedWithCurrentItem="True" ItemTemplate="{StaticResource UserTemplate1}"  />

カスタムデータ型のオブジェクトのリストがあります

    class item{
         string name;
         bool val; 
         } 

このリストをリストボックスにバインドできません。リストのチェックボックスに変更が加えられるたびに、オブジェクト(アイテム)のリストに反映されるようにリストをバインドしたい。

       listbox3.itemsource = list_items

これは私にはうまくいきません

ここでは、listbox3 をクラス checkvm のオブジェクトのリストにバインドできません。

4

2 に答える 2

1

CheckBox.Checked「ischeck」にバインドしていますが、itemクラスには というプロパティが含まれていませんischeck

このようなアイテムのリストにバインドする場合:

class item{
     string name;
     bool val; 
     } 

DataTemplate のバインディングは次のようにする必要があります。

<DataTemplate x:Key="UserTemplate1" >
  <StackPanel Orientation="Horizontal">
    <TextBlock  Name="vmname" Text="{Binding name}" Width="100"/>
    <CheckBox Name="cb" IsChecked="{Binding val}"/>
   </StackPanel>
</DataTemplate>

INotifyPropertyChangedまた、コード ビハインドで項目を変更して UI を自動的に更新できるようにする場合、または何らかの変更通知を行いたい場合は、クラスを実装する必要があることに注意してください。

補足として、私はあなたの(欠如した)命名規則が嫌いです。標準の .Net 命名規則をグーグル検索して使用することを強くお勧めします。:)

于 2015-03-25T15:43:37.887 に答える