访问GUI项目,通过发件人?

时间:2013-07-11 11:06:50

标签: c# windows-phone-7 xaml listbox progress-bar

好的,这是我的情况:

  • 我使用Bindings(一个带有项目列表的类)填充了ListBox
  • ListBox中的每个项目都包含一些TextBlocks,一个ProgressBar和一个Button
  • 点击按钮后,会触发正确的事件,我可以检索点击((Button)sender).DataContext
  • 的“对象”

问题:

  • 点击按钮后,我应该如何访问被点击项目的UI控件,例如将进度值“绑定”到“选定”项目的进度条?

1 个答案:

答案 0 :(得分:1)

如果您有权访问该按钮(通过强制转换sender),那么您可以通过浏览可视树来访问其他控件(使用button.Parent检查按钮的父级,然后是子级,以及等......)但这样做是一个坏主意,因为它会在您的UI和代码之间产生强烈的依赖关系(当您更改UI时,您必须更改代码)。

相反,使用数据绑定来设置控件属性,只需从后面的代码修改模型。基本上,您已经知道如何使用((Button)sender).DataContext检索模型,为什么不将进度条绑定到该对象的属性?

如果您无法修改模型或不想在其上添加“Progress”属性,则可以使用包装器:

public class Wrapper : INotifyPropertyChanged
{
    public MyModel Model { get; set; }
    public double Progress { get; set; }
    // etc...
}

然后将这些对象绑定到列表框。