只有第一个项目在水平StackPanel是可选择的

本文关键字:StackPanel 可选择 水平 第一个 项目 | 更新日期: 2023-09-27 18:16:09

我的意思是我有一个水平的StackPanel和一个名为stk_Tap1Tap事件

<StackPanel Orientation="Horizontal" Tap="stk_Tap1">
    <Rectangle Width="28" Height="28" Fill="{Binding HexColor}"/>
    <TextBlock Text="{Binding Color}" Margin="12,0,0,0"/>
</StackPanel>

一切都是正常的,当一个项目被点击时问题就出现了。只有当我点击矩形时,tap事件处理程序才会触发。当我按下TextBlock时,什么也没发生。

private void stk_Tap1(object sender, System.Windows.Input.GestureEventArgs e)
    {
        if (AccentColorListPicker.SelectedIndex != -1)
        {
            var selectedItem = (sender as StackPanel).DataContext as ColorItem;
            string itemName = selectedItem.color //the `color` property of the custom ColorItem class I defined is actually the string name of the color
    }

我不明白是什么导致了这个问题。原来我只有TextBlock内的StackPanel和它工作得很好。我认为,虽然添加一个矩形与相应的TextBlock的填充对用户来说会更直观,因此我的问题出现了。

只有第一个项目在水平StackPanel是可选择的

我也遇到过类似的问题。尝试将stackpanel的背景设置为纯色或透明,这解决了我的问题。

文本块漂浮在StackPanel的表面上。因为tap事件是针对StackPanel的,它只在你点击StackPanel时触发。要做到这一点,请将tap事件添加到Text Block中。