在列表框内的项目模板中选择编辑事件

本文关键字:选择 编辑 事件 项目 列表 | 更新日期: 2023-09-27 18:24:32

我需要在列表框项模板中设置选择更改事件。我的列表框由三个文本块和一个图像组成。我只想获得第三个文本块文本,当我选择第三个文字块时,文字块中的文本将显示为弹出窗口。

我使用可视化树来搜索文本块,但它采用第一个文本块的值,而不是第三个文本块。我能做些什么来获得第二个和第三个文本块的值。只有当我点击列表框中的文本块而不是整个列表框项目时,我才需要触发弹出窗口。

<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>  

在列表框内的项目模板中选择编辑事件

使用TextBlock_MouseLeftButtonUp或TextBlock_Tap(点击文本块时会上升)

在这方面,

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

上面的字符串显示在您想要的位置。

您可能应该将有问题的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>