【问题标题】:WPF : ListBox.ItemTemplate doesn't react when click on text or image wpf xamlWPF:单击文本或图像 wpf xaml 时 ListBox.ItemTemplate 没有反应
【发布时间】:2015-06-03 11:46:51
【问题描述】:

我是 Xaml 和 WPF 的新手。我正在使用以下代码从 RSS 提要中提取按钮标题和图像。 仅当用户单击边框时按钮才会做出反应的问题......当用户单击文本或图像时它不会做出反应。

 <ListBox.ItemTemplate >
      <DataTemplate >
                    <Button  Background="{Binding C:AccentColors}" Width="400" Height="100" HorizontalAlignment="Left" >
                        <Grid Width="400" Height="100" >
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="10"/>
                                <ColumnDefinition Width="2*"/>
                            </Grid.ColumnDefinitions>

                            <Image Source="{Binding XPath=enclosure/@url}" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Top"  />
                            <TextBlock TextWrapping="Wrap" Text="{Binding XPath=title}" FontWeight="Bold" Grid.Column="2"/>
                        </Grid>
                    </Button>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

【问题讨论】:

  • 你能澄清你所说的“react”是什么意思吗?此外,您的 Button 没有事件或命令。
  • 我通过将 Selected 元素绑定到堆栈面板来管理点击行为,如下所示 ....
  • 移除按钮:我认为您将拥有所需的功能

标签: wpf xaml button


【解决方案1】:

您必须在按钮中添加 Click 事件。

<Button  Background="{Binding C:AccentColors}" Width="400" Height="100" HorizontalAlignment="Left" Click="MethodNameHere".....

您还必须在 Window C# 文件中创建和实现该方法

【讨论】:

  • 我使用列表框的 isSelected 属性管理点击行为,如下所示
【解决方案2】:

常见的错误是有人在没有意识到的情况下将 TextBlock 放在按钮顶部,因为 TextBlock 具有透明背景。

从视觉上看,TextBlock 的 Text 可能在 Button 之外,但由于 TextBlock 的对齐方式默认设置为 strech,它会填满整个区域。

很难说这是不是你的情况......

<Grid>
   <Button Content="I'm not working" Margin="0,100,0,0" />
   <TextBlock Text="I'm in top left corner" />
<Grid />

如果您将 TextBlock.Background 设置为红色,则整个网格将是红色的。

【讨论】:

  • 我的Xaml的结构是[code] [/code]
  • 从您发布的内容来看,我们无法为您提供更多帮助。你在你的投票中其他地方有问题。我只能建议您使用 xamlspy 之类的工具在运行时调查您的可视化树
【解决方案3】:

按钮正在获得点击。您需要一个处理程序,或者是命令绑定,或者如果您不使用 MVVM - 代码隐藏方法:

<Button Click="ButtonBase_OnClick" 

处理程序将如下所示:

private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
}

【讨论】:

  • 我使用列表框的 isSelected 属性管理点击行为,如下所示
猜你喜欢
  • 2011-09-11
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多