如何为自定义itemscontrolItem创建IsSelected属性?

时间:2011-01-07 00:05:15

标签: wpf silverlight wpf-controls custom-controls

我试图通过直接继承ItemsControl来创建自定义ItemsControl(WPF / Silverlight,我使用相同的代码库)。我通过继承ContentControl为它创建了一个Item类。我想为Item类创建IsSelected属性。我反映了ListBoxItem类,但不太清楚IsSelected属性是如何设置的。 任何建议/指示都会非常有用。

1 个答案:

答案 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派生出来。