是否可以绑定Silverlight DataTemplate中的事件?

是否可以绑定Silverlight DataTemplate中的事件?,第1张

概述是否可以绑定Silverlight DataTemplate中的事件?如果是这样,最好的方法是什么? 例如,假设您已经创建了一个具有Button的DataTemplate,如下所示: <UserControl.Resources> <DataTemplate x:Key="MyDataTemplate" > <Grid> <Button Content="{Bindi 是否可以绑定Silverlight DataTemplate中的事件?如果是这样,最好的方法是什么?

例如,假设您已经创建了一个具有button的DataTemplate,如下所示:

<UserControl.Resources>  <DataTemplate x:Key="MyDataTemplate" >     <GrID>        <button Content="{Binding buttonText}" margin="4" />     </GrID>  </DataTemplate></UserControl.Resources>

然后,将其应用于ListBox ItemTemplate,如下所示:

<GrID x:name="LayoutRoot" Background="White">  <ListBox x:name="lbListBox" ItemTemplate="{StaticResource MyDataTemplate}" />    </GrID>

如果将ListBox的ItemSource设置为类的对象列表:

public class MyDataClass{  public string buttonText{ get; set; }}

那么您如何从列表中的DataTemplate中的每个按钮中点击按钮呢?您可以使用绑定将Click事件绑定到“MybuttonClass”中的方法,如下所示:

<UserControl.Resources>  <DataTemplate x:Key="MyDataTemplate" >     <GrID>        <button Click="{Binding OnItembuttonClick}" Content="{Binding buttonText}" margin="4" />     </GrID>  </DataTemplate></UserControl.Resources>

这会工作吗如果是这样,我应该把什么放在“MyDataClass”中来捕捉事件?

谢谢,
杰夫

解决方法 有几个选项.

一.创建绑定该行的数据对象的自定义控件.在该自定义控件上添加绑定对象的处理程序.

我不认为您对点击的约束将起作用.没有绑定文档,只是声明你的点击字符串.

在控件的页面上添加处理程序.
请记住,如果绑定这种方式,您将只能与该项目的发件人(按钮)一起工作,它是属性.如果您需要获取对象上的特定属性,则可能最好追求第一个选项.

小例子通过在点击事件的列表框中添加10个按钮来演示功能. HTH

DataTemplate XAML

<UserControl.Resources>    <DataTemplate x:name="MyDataTemplate">        <GrID>            <button Click="button_Click" Content="{Binding ItemText}"/>        </GrID>    </DataTemplate></UserControl.Resources>

ListBox XAML

<ListBox x:name="ListBoxThingee" ItemTemplate="{StaticResource MyDataTemplate}"/>

代码背后(我只是将这一切都插入到page.xaml文件中

public class MyClass{    public string ItemText { get; set; }}public partial class Page : UserControl{    ObservableCollection<MyClass> _Items;    public Page()    {        InitializeComponent();        _Items = new ObservableCollection<MyClass>();        for (int i = 0; i < 10; i++)        {            _Items.Add(new MyClass() {ItemText= string.Format("Item - {0}",i)});        }        this.ListBoxThingee.ItemsSource = _Items;    }    private voID button_Click(object sender,RoutedEventArgs e)    {        button _b = sender as button;        if (_b != null)        {            string _s = _b.Content as string;            MessageBox.Show(_s);        }    }}
总结

以上是内存溢出为你收集整理的是否可以绑定Silverlight DataTemplate中的事件?全部内容,希望文章能够帮你解决是否可以绑定Silverlight DataTemplate中的事件?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1003523.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存