只有第一个项目在水平StackPanel是可选择的
本文关键字:StackPanel 可选择 水平 第一个 项目 | 更新日期: 2023-09-27 18:16:09
我的意思是我有一个水平的StackPanel
和一个名为stk_Tap1
的Tap
事件
<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的表面上。因为tap事件是针对StackPanel的,它只在你点击StackPanel时触发。要做到这一点,请将tap事件添加到Text Block中。