繁体   English   中英

WP8 Databind按钮单击/带有RoutedEventHandler的命令

[英]WP8 Databind button click/Command with RoutedEventHandler

Windows Phone和Xaml相当新,我决定开始使用DataTemplates,因为它看起来更整洁,我可以轻松切换它们等。

我有一个要求,按钮点击取决于列表中项目的数据,我想调用不同的功能或不同的参数。 我认为最简单的方法是通过匿名函数将RoutedEventHandler绑定到它。

当我在代码隐藏中使用静态控件执行此操作时,它完美地工作。 当我将自己的控件添加到堆栈面板等时,它也有效。但它都非常混乱。

// Example of RoutedEventHandler that works when I create the button in code behind
model.clickEventHandler = (s, e) => LoadResult(r.id);

 <ScrollViewer Name="scrvResults" >
        <ListBox Name="lbResults" ItemsSource="{Binding}">
              <ListBox.ItemTemplate>
                      <DataTemplate>
                             <Button Command="{Binding clickEventHandler}"  > 
                                   // Stuff
                                   // Doesn't crash but doesn't fire the event
                             </Button>
                             <Button Click="{Binding clickEventHandler}"  > 
                                   // Stuff
                                   // Throws a com exception
                             </Button>
                      </DataTemplate>
                </ListBox.ItemTemplate>
          </ListBox>
    </ScrollViewer>

我尝试了各种子选项。 我见过的所有例子似乎都链接到静态函数。 这只是一些语法,我错了,我不能这样绑定它吗?

您需要将命令绑定到一种ICommand。 有关详情,请参阅此处:

ICommand界面

命令绑定

可以使用交互触发器绑定按钮单击事件,而不是简单地将事件绑定到click属性:

在XAML中为MVVM使用EventTrigger - 代码背后没有代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM