2014-07-09 25 views
0

我即将制作一个具有多个文本块的控制页面。 每个文本块将被“链接”到另一个页面,如何使用XAML绑定WindowsPhone 8上的多个事件处理程序?

,这里是我的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,我我很确定罪魁祸首是我的堆栈面板上的“Tap”绑定,当我忽略它时,代码就起作用了。 我错过了什么,或者我的整个方法错了吗?

+0

为什么一个字符串被绑定到点击事件? – bit

回答

1

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

你这里有两种选择:

  • 要么你明确指定一个方法名(不是一个字符串)作为点击事件的事件处理程序。例如:

    点击=“MyControl_Tap” 在这种情况下,你必须有背后

  • 在控件的代码MyControl_Tap法,因为你似乎可以用MVVM模式,你必须创建一个ICommand的,然后包括你的整个的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> 
    

    ...

+0

感谢您的回答,我有你的主意, 但我最终使用字符串来自:string selectedEvent =((SettingProperty)((FrameworkElement)sender).DataContext).TapMethod; – RJJatson

相关问题