Событие Selecteditem в шаблоне элемента внутри списка - PullRequest
1 голос
/ 15 февраля 2012

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

Я использовал визуальное дерево для поиска текстового блока, но он принимает значениепервого текстового блока вместо третьего текстового блока.Что я могу сделать, чтобы получить значение 2-го и 3-го текстовых блоков.И мне нужно запускать всплывающее окно, только когда я щелкаю текстовое поле в списке, а не весь элемент списка.

<ListBox Name="listBox1" Width="Auto" SelectionChanged="Listbox1_SelectionChanged"> 
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <Image Height="165" HorizontalAlignment="Left" Margin="10,40,-400,0"  VerticalAlignment="Top" Width="175" Source="{Binding thumb}"/>
                <TextBlock Name="pagetext"  TextWrapping="Wrap"  VerticalAlignment="Top" HorizontalAlignment="Left" Margin="195,-135,-200,0" Text="{Binding page}" Foreground="#FF170101" />
                <TextBlock Name="titletext" Width="1000" TextWrapping="NoWrap"  VerticalAlignment="Top" HorizontalAlignment="Left" Margin="195,-167,-200,0" Text="{Binding title}" Foreground="#FF170101" />
                <TextBlock Name="text" Width="1000" TextWrapping="NoWrap"  VerticalAlignment="Top" HorizontalAlignment="Left" Margin="195,-167,-200,0" Text="{Binding title}" Foreground="#FF170101" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>   
</ListBox>  

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Вам, вероятно, следует обернуть TextBlock в Button или добавить к нему Hyperlink. Обе команды поддержки и имеют событие Click. (Чтобы сделать Button невидимым, вы можете переопределить Template на простой ContentPresenter только)

<Button>
    <Button.Template>
        <ControlTemplate TargetType="Button"><ContentPresenter/></ControlTemplate>
    </Button.Template>
    <TextBlock .../>
</Button>
<TextBlock>
    <!-- In SL you probably need a Run inside the Hyperlink and it may not be bindable -->
    <Hyperlink Text="{Binding title}" .../>
</TextBlock>
1 голос
/ 15 февраля 2012

использовать TextBlock_MouseLeftButtonUp или TextBlock_Tap (это повышение при нажатии на текстовый блок)

В этом

    private void TextBlock_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        TextBlock t = (TextBlock)sender;
        string s= t.Text;
    }

приведенная выше строка отображает, где вы хотите.

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