Как выбрать элементы пользовательского интерфейса в пользовательском шаблоне данных для элемента списка в Silverlight - PullRequest
0 голосов
/ 26 июля 2011

Привет всем! У меня есть пользовательский контроль, который я определил как шаблон данных.Я пытаюсь сделать так, чтобы результаты возвращались на панели переносов, а каждый результат возвращался в формате листов.У меня все это работает, и результаты возвращаются правильно.Однако у меня есть элементы шаблона данных, на которые я бы хотел, чтобы пользователь нажимал.(средство прокрутки для прокрутки данных, кнопки для щелчка и текст для выбора) / В данный момент, когда вы щелкаете по выбранному элементу, элемент выбирается, но все как внутри элемента списка блокируется (недоступно для выбора).

Буду признателен за любые предложения относительно того, что мне здесь не хватает.Ниже приведен мой код для пользовательских элементов управления и как я ссылаюсь на панель переноса из app.xaml

SearchResultTileControl.xaml

<UserControl x:Class="UI.Search.Controls.SearchResultTileControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:dts="clr-namespace:UI.Search.Commands"
         xmlns:formatter="clr-namespace:UI.Search.Commands"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:qr="clr-namespace:UI.Search.Controls.tiles"
         d:DesignHeight="300"
         d:DesignWidth="400"
         mc:Ignorable="d">

<Grid x:Name="LayoutRoot"  >
    <ListBox x:Name="ResultListBox"
             HorizontalAlignment="Stretch"
             Background="{x:Null}"
             BorderThickness="0"
             HorizontalContentAlignment="Stretch"
             ItemsPanel="{StaticResource ResultsItemsControlPanelTemplate}"
             ItemContainerStyle="{StaticResource ListBoxItemStyle1}"
             ItemsSource="{Binding SearchResults[0].Results}"
             ScrollViewer.HorizontalScrollBarVisibility="Disabled">
        <ListBox.ItemTemplate>

            <DataTemplate>
                <formatter:TypeTemplateSelector Content="{Binding}" HorizontalContentAlignment="Stretch">   
                    <!--  Person Template  -->
                    <formatter:TypeTemplateSelector.PersonTemplate>
                        <DataTemplate>
                            <qr:ucTilePerson />
                        </DataTemplate>
                    </formatter:TypeTemplateSelector.PersonTemplate>

                    <!--  Incident Template  -->
                    <formatter:TypeTemplateSelector.IncidentTemplate>
                        <DataTemplate>
                            <qr:ucTileIncident />
                        </DataTemplate>
                    </formatter:TypeTemplateSelector.IncidentTemplate>

                </formatter:TypeTemplateSelector>

            </DataTemplate>
        </ListBox.ItemTemplate>

    </ListBox>

</Grid>

Внутри Usercontrol ucTilePerson.xaml у меня есть шаблон настройки:

<UserControl x:Class="UI.Search.Controls.tiles.ucTilePerson"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:formatter="clr-namespace:UI.Search.Commands"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"
         Width="300"
         Height="250"
         d:DesignHeight="250"
         d:DesignWidth="300"
         IsHitTestVisible="False"
         mc:Ignorable="d">
<UserControl.Resources>
    <formatter:TileHighlightConverter x:Key="FormatConverter" />
</UserControl.Resources>
<Grid x:Name="PersonLayoutRoot">
    <Rectangle Style="{StaticResource TileBackground}" />
    <ScrollViewer Margin="5" BorderBrush="{x:Null}">
        <StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
            <StackPanel Margin="0,0,0,2" Orientation="Horizontal">
                <StackPanel>
                    <Image Width="48"
                           Height="48"
                           Source="/Images/search/person.png" />
                    <TextBlock Style="{StaticResource TileRelevance}" Text="{Binding Relevance}" />
                </StackPanel>
                <StackPanel>
                    <HyperlinkButton Content="{Binding Type}" Style="{StaticResource TypeHyperlinkButton}" />
                    <TextBox Margin="0,0,0,2"
                             Style="{StaticResource TileTextBox}"
                             Text="{Binding Content[AgencyName]}"
                             TextWrapping="Wrap" />
                </StackPanel>
            </StackPanel>

            <toolkit:WrapPanel Margin="0,0,0,2">
                <TextBlock Style="{StaticResource TileLabel}" Text="Name" />
                <TextBox Margin="0,0,3,0"
                         Style="{StaticResource TileTextBox}"
                         Text="{Binding Content[lastname]}" />
                <TextBox Margin="0,0,3,0"
                         Style="{StaticResource TileTextBox}"
                         Text="{Binding Content[firstname]}" />
                <TextBox Style="{StaticResource TileTextBox}" Text="{Binding Content[middlename]}" />
            </toolkit:WrapPanel>
            <Border Style="{StaticResource TileBorder}">
                <toolkit:WrapPanel Orientation="Horizontal">
                    <StackPanel Style="{StaticResource TileVerticalStackPanel}">
                        <TextBlock Style="{StaticResource TileLabel}" Text="Race" />
                        <TextBox Style="{StaticResource TileTextBox}" Text="{Binding Content[race]}" />
                    </StackPanel>
                    <StackPanel Style="{StaticResource TileVerticalStackPanel}">
                        <TextBlock Style="{StaticResource TileLabel}" Text="Sex" />
                        <TextBox Style="{StaticResource TileTextBox}" Text="{Binding Content[sex]}" />
                    </StackPanel>
                    <StackPanel Style="{StaticResource TileVerticalStackPanel}">
                        <TextBlock Style="{StaticResource TileLabel}" Text="DOB" />
                        <TextBox Style="{StaticResource TileTextBox}" Text="{Binding Content[dob]}" />
                    </StackPanel>
                </toolkit:WrapPanel>
            </Border>
            <Border Style="{StaticResource TileBorder}">
                <toolkit:WrapPanel Orientation="Horizontal">
                    <StackPanel Style="{StaticResource TileVerticalStackPanel}">
                        <TextBlock Style="{StaticResource TileLabel}" Text="Involvement" />
                        <TextBox Style="{StaticResource TileTextBox}" Text="{Binding Content[involvementtype]}" />
                    </StackPanel>
                    <StackPanel Style="{StaticResource TileVerticalStackPanel}">
                        <TextBlock Style="{StaticResource TileLabel}" Text="Associated Event" />
                        <TextBox Style="{StaticResource TileTextBox}" Text="{Binding Content[0].EventAssociation}" />
                        <HyperlinkButton Content="{Binding Content[0].EventID}" Style="{StaticResource TileResultLink}" />
                    </StackPanel>

                </toolkit:WrapPanel>
            </Border>
            <Border Style="{StaticResource TileBorder}">
                <ContentControl Width="256"
                                Margin="0,0,6,0"
                                BorderThickness="0"
                                Content="{Binding HitContext,
                                                  Converter={StaticResource FormatConverter}}"
                                FontSize="11" />
            </Border>

        </StackPanel>
    </ScrollViewer>
</Grid>

И затем я устанавливаю ссылку на панель обтекания, используемую в ListBoxt ItemsPanel в моем app.xaml

<ItemsPanelTemplate x:Key="ResultsItemsControlPanelTemplate">
        <toolkit:WrapPanel/>
    </ItemsPanelTemplate>

Я подозреваю, что это что-то из стилей Listbox, которое может этому помешать, но я не уверен.Еще раз спасибо за любые предложения,

Приветствия

1 Ответ

0 голосов
/ 26 июля 2011

Обнаружена проблема.В пользовательском контроле (ucTilePerson) для IsHitTestVisible было установлено значение false.Так как он был установлен на уровне управления пользователем, все элементы унаследовали это свойство, поэтому я получал эффект невозможности вызывать события мыши на чем-либо.было поздно днем.

Ура

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