2016-04-29 10 views
0

になる私はlistboxitemに複数の要素を配置できるようにするには、次のListBoxItemStyleをコード化:WPFのListboxItemsは選択不可能

<Style x:Key="lbWithButton" TargetType="ListBoxItem"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ListBoxItem"> 
       <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="10*" /> 
         <ColumnDefinition Width="3*" /> 
        </Grid.ColumnDefinitions> 
        <TextBlock Text="{TemplateBinding Content}" Grid.Column="0"/> 
        <xctk:IntegerUpDown Minimum="0" Value="0" Maximum="1000" Grid.Column="1"/> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

残念ながら、私はもうListboxItemsを選択傾けます。 これはリストボックス内のテキストブロックのみでも発生します。

ヘルプをいただければ幸いです!

+2

。 – Clemens

答えて

1

あなたはItemContainerStyleの代わりにItemTemplateにを使用する必要があります:あなたは、おそらくより良いItemTemplateに代わりのItemContainerStyleを設定

<ListBox> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="10*" /> 
        <ColumnDefinition Width="3*" /> 
       </Grid.ColumnDefinitions> 
       <TextBlock Text="{Binding Content}" Grid.Column="0"/> 
       <xctk:IntegerUpDown Minimum="0" Value="0" Maximum="1000" Grid.Column="1"/> 
      </Grid>  
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
+1

@RambaZamba、あなたのスタイルが機能しない理由は、デフォルトのコントロールテンプレートをオーバーライドしているためです。これは論理的に選択されていますが、視覚的にコントロールテンプレートに反映されていません。 –

+0

お返事ありがとうございます。これはバインドされたItemsSourceでのみ動作します。残念ながら、TextBlock Text = "{TemplateBinding Content}"は空です。アイテムを選択でき、IntegerUpDownも表示されます。 – RambaZamba

+0

@RambaZambaはBindingによってTemplateBindingを置き換えます – Amine

関連する問題