Как создать свойство IsSelected для пользовательских itemscontrolItem? - PullRequest
1 голос
/ 07 января 2011

Я пытаюсь создать пользовательский ItemsControl путем прямого наследования от ItemsControl (WPF / Silverlight, я использую одну и ту же базу кода для обоих) Я создал для него класс Item, унаследованный от ContentControl. Я хочу создать свойство IsSelected для класса Item. Я отразил класс ListBoxItem, но не очень ясно, как устанавливается свойство IsSelected. Любые предложения / указатели будут действительно полезны.

1 Ответ

1 голос
/ 10 января 2011

Если вам нужен ItemsControl без ListBox функций, за исключением того, что он внутренне поддерживает концепцию выбора, вы можете легко создать безликий 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 и выделяйте то, что вам не нужно или, по крайней мере,происходят от Selector.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...