1

我在列表框的 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() 以便我知道它何时触发。)

有任何想法吗?click 事件每隔一段时间才会触发一次,这真的很奇怪。

4

1 回答 1

1

尝试以下两种“解决方法”之一:

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

  2. 在您的点击事件回调中SelectedItem,将您的设置ListBox为 null:myListBox.SelectedItem = null;

我认为两者之一应该工作......

点击事件回调 =EnableDisableButton_Click方法

于 2012-04-06T23:25:10.497 回答