带有ListBox的ContentPresenter

时间:2011-07-28 03:06:20

标签: c# wpf xaml

我正在尝试为ItemsControl使用单选模式。所以我将ItemsControl更改为ListBox但是我得到一个异常“用于类型'ContentPresenter'的样式不能应用于'ListBoxItem'类型。”什么在这里?我不能将ContentPresenter用于ListBoxes吗?

<ListBox SelectionMode="Single" ItemsSource="{Binding}" MinHeight="200" MinWidth="200">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid></UniformGrid>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>

    <ListBox.ItemContainerStyle>
        <Style TargetType="ContentPresenter">
            <Setter Property="Grid.Row" Value="{Binding X}" />
            <Setter Property="Grid.Column" Value="{Binding Y}" />
        </Style>
    </ListBox.ItemContainerStyle>

    <ListBox.ItemTemplate>
        <DataTemplate DataType="ObservableCollection">
            <Border BorderBrush="Black" BorderThickness="0.5" Background="Beige">
                <clr:Cell Content="{Binding Character}"></clr:Cell>
            </Border>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

1 个答案:

答案 0 :(得分:5)

该样式需要以ListBoxItem为目标,因为它始终是创建的。可以找到更多ListBox模板和datatemplate文档和示例here