如何在windowphone8上使用XAML绑定多个事件处理程序

本文关键字:绑定 事件处理 程序 XAML windowphone8 | 更新日期: 2023-09-27 18:12:17

我要做一个有几个文本块的控制页。每个文本块将被"链接"到另一个页面,

我的xaml部分

.........<phone:LongListSelector x:Name="settingSelector" ItemsSource="{Binding}">
                <phone:LongListSelector.ItemTemplate>
                    <DataTemplate>
                        <StackPanel toolkit:TiltEffect.IsTiltEnabled="True" Tap="{Binding TapMethod, Mode=TwoWay}" >
                            <TextBlock Text="{Binding SetTitle}" FontSize="43" />
                            <TextBlock Text="{Binding SetDescription}" FontSize="19" Margin="0 0 0 10" />
                        </StackPanel>
                    </DataTemplate>
                </phone:LongListSelector.ItemTemplate>
            </phone:LongListSelector>..........

当我尝试下面的代码时:

  .........public class SettingProperty
    {
        public string SetTitle{get; set;}
        public string SetDescription{get; set;}
        public string TapMethod{get; set;}
        public SettingProperty(string setTitle, string setDescription, string tapMethod)
        {
            SetTitle = setTitle;
            SetDescription = setDescription;
            TapMethod = tapMethod;
        }
    }
    List<SettingProperty> DataSetting()
    {
        List<SettingProperty> settingCollection = new List<SettingProperty>();
        settingCollection.Add(new SettingProperty("Saldo", "cek saldo", "saldo_Tap"));
        return settingCollection;
    }
    private void saldo_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        NavigationService.Navigate(new Uri("/saldo.xaml", UriKind.Relative));
    }..........

我直接将它们部署到我的L520,我很确定罪魁祸首是我的stackpanel上的"Tap"绑定,当我省略它时,代码工作。是我错过了什么,还是我的整个方法都错了?

如何在windowphone8上使用XAML绑定多个事件处理程序

我们对"Tap"事件的理解是错误的。

这里有两个选项:

  • 明确指定一个METHOD NAME(不是字符串)作为Tap事件的事件处理程序。例如:

    利用= " MyControl_Tap "在这种情况下,你必须在

  • 后面的控件代码中有一个MyControl_Tap方法
  • 或者,因为你似乎正在使用MVVM模式,你必须创建一个iccommand,然后包括你的整个StackPanel在一个按钮,像这样:

    ...<DataTemplate>
    <Button Command="{Binding MyCommandProperty}">
                        <StackPanel toolkit:TiltEffect.IsTiltEnabled="True" >
                            <TextBlock Text="{Binding SetTitle}" FontSize="43" />
                            <TextBlock Text="{Binding SetDescription}" FontSize="19" Margin="0 0 0 10" />
                        </StackPanel>
    </Button>