ListBox中的WP7按钮仅在每次按下时“点击”

时间:2012-04-06 23:06:00

标签: wpf windows-phone-7

我在DataTemplate中为我的列表框定义了一个按钮。

<phone:PhoneApplicationPage.Resources>        
    <DataTemplate x:Key="ListTemplate">
        <Grid Margin="12,12,24,12">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>

            <Button Grid.Column="0" Name="EnableDisableButton" 
                    Click="EnableDisableButton_Click" 
                    BorderBrush="Transparent">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto" />
                    </Grid.RowDefinitions>
                    <Image Grid.Row="0" Source="\Images\img.dark.png" Width="48" Height="48" Visibility="{StaticResource PhoneDarkThemeVisibility}" />
                    <Image Grid.Row="0" Source="\Images\img.light.png" Width="48" Height="48" Visibility="{StaticResource PhoneLightThemeVisibility}" />
                    <Rectangle Grid.Row="1" Width="48" Height="8" Fill="{Binding CurrentColor}" RadiusX="4" RadiusY="4" />
                </Grid>
            </Button>

            <Grid Grid.Column="1">
              <... more stuff here ...>
            </Grid>
        </Grid>
    </DataTemplate>
</phone:PhoneApplicationPage.Resources>

我所看到的是,当我第一次按下按钮时,Click事件会触发。我第二次按它,它不会发射。第三次按,发射。第四次按,不开火。等等。最初我把它绑定到命令但是行为方式相同。 (我在事件处理程序中放了一个Debug.WriteLine(),所以我知道它何时触发。)

有什么想法吗?奇怪的是,点击事件每隔一段时间才会触发。

1 个答案:

答案 0 :(得分:1)

尝试以下两个“解决方法”:

  1. 在您的点击事件回调中,将焦点设置回页面:this.Focus();

  2. 在点击事件回调中,将SelectedItem的{​​{1}}设置为空:ListBox

  3. 我认为其中一个应该有用......

    点击事件回调= myListBox.SelectedItem = null;方法