我试图通过直接继承ItemsControl来创建自定义ItemsControl(WPF / Silverlight,我使用相同的代码库)。我通过继承ContentControl为它创建了一个Item类。我想为Item类创建IsSelected属性。我反映了ListBoxItem类,但不太清楚IsSelected属性是如何设置的。 任何建议/指示都会非常有用。
答案 0 :(得分:1)
如果您希望ItemsControl
没有ListBox
功能,除了它内部支持选择概念,您可以轻松创建一个与{{1}无法区分的无外观ListBox
}。这两个是两个并排的,你无法分辨出来。唯一的区别是左侧列表支持内部选择。
ItemsControl
所以最好的建议是,如果你想要选择,从<Grid>
<Grid.Resources>
<x:Array Type="sys:String" x:Key="sampleData">
<sys:String>Red</sys:String>
<sys:String>Green</sys:String>
<sys:String>Blue</sys:String>
</x:Array>
</Grid.Resources>
<UniformGrid Columns="2">
<ItemsControl ItemsSource="{StaticResource sampleData}"/>
<ListBox ItemsSource="{StaticResource sampleData}">
<ListBox.Style>
<Style TargetType="ListBox">
<Setter Property="Focusable" Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBox">
<ItemsPresenter/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.Style>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Focusable" Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<ContentPresenter/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
</UniformGrid>
</Grid>
派生出来,并找出你不想要的东西,或者至少从ListBox
派生出来。