2009-03-06 4 views
2

WPFでチェックボックスを使用してListBoxを作成したい場合、単純な文字列値で "Content"値をデータバインドする必要があります。しかし、私が試みると<CheckBox Margin="5" Content="{Binding}" />アプリがクラッシュします。DataTind to DataTemplatedチェックボックス

これは私が持っているものです。あなたが無限に再帰するDataTemplateを作成し

<ListBox Grid.Row="1" IsSynchronizedWithCurrentItem="True" x:Name="drpReasons"> 
        <ListBox.ItemsPanel> 
         <ItemsPanelTemplate> 
          <WrapPanel Orientation="Horizontal" > 
          </WrapPanel> 
         </ItemsPanelTemplate> 
        </ListBox.ItemsPanel> 
        <ListBox.Resources> 
         <DataTemplate DataType="{x:Type System:String}"> 
          <CheckBox Margin="5" Content="{Binding}" /> 
        </DataTemplate> 
        </ListBox.Resources> 
       </ListBox> 
+0

それはあなたの特定の問題の一部ではないのですが、あなたは同様にTrueにWrapPanelのIsItemsHostプロパティを設定する必要があります。

あなたは明示的にチェックボックスの内側のTextBlockを置くことによってそれを修正することができます。 –

+0

Schweet!その小さなおかげでありがとう。 – Russ

答えて

3

(私は、単純な何かが欠けています確信しています)。 String用のDataTemplateを設定し、CheckBoxの内容をStringに設定すると、CheckBoxはDataTemplate自体を使用するため、CheckBox内でCheckBoxを使用するなどです。

<ListBox x:Name="drpReasons" Grid.Row="1" IsSynchronizedWithCurrentItem="True"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapPanel Orientation="Horizontal"> 
      </WrapPanel> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
    <ListBox.Resources> 
     <DataTemplate DataType="{x:Type sys:String}"> 
      <CheckBox Margin="5"> 
       <TextBlock Text="{Binding}"/> 
      </CheckBox> 
     </DataTemplate> 
    </ListBox.Resources> 
</ListBox> 
+0

私はそれが何か簡単であることを知っていました。ありがとう! – Russ