如何在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"绑定,当我省略它时,代码工作。是我错过了什么,还是我的整个方法都错了?
我们对"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>
…