.net 绑定到代码隐藏中的方法
我有一个自定义控件模板,用于.net 绑定到代码隐藏中的方法,.net,wpf,data-binding,listview,controltemplate,.net,Wpf,Data Binding,Listview,Controltemplate,我有一个自定义控件模板,用于列表视图,为每条记录添加一行,在窗口中定义了类似的内容。参考资料 <ControlTemplate TargetType="ListBoxItem"> <Border> <StackPanel> <GridViewRowPresenter> <TextBlock Name="myTextBlock" /> </Sta
列表视图
,为每条记录添加一行,在窗口中定义了类似的内容。参考资料
<ControlTemplate TargetType="ListBoxItem">
<Border>
<StackPanel>
<GridViewRowPresenter>
<TextBlock Name="myTextBlock" />
</StackPanel>
</Border>
<ControlTemplate.Triggers>
//Triggers here
</ControlTemplate.Triggers>
</ControlTemplate>
//这里触发
我的问题是,我想将TextBlock
中的文本绑定到一个不同的ItemsSource
,而不是在实例化时绑定到实际列表框的。以编程方式绑定是不可能的。我曾尝试用TextBlock
替换另一个ListView
并绑定到一个方法,但我不知道如何使用ObjectDataProvider
并绑定到代码隐藏中的一个方法(其中包含一个方法,该方法将返回我想要绑定的内容列表),但也遇到了问题
在我不清楚的情况下,一步一步快速:
- 我有一个
ListView
模板,它为每个记录添加一个额外的行
- 这个
ListView
将绑定到(比如)一个Foo对象集合
- 问题是我想将额外的行绑定到与主
列表视图
完全不同的itemsource。在我的模板中,我似乎无法做到这一点:/
那么-有没有一种方法可以直接绑定到我的代码中定义的方法的结果,我可以在模板中引用它?好的,这就是想法:
1) 使用此项模板创建绑定到Foo
的列表框:
-------------
| DATA HERE |
| |
-------------
-------------
| |
| DATA HERE |
-------------
2) 使用此项目模板创建绑定到完全不同的itemsource
的列表框:
-------------
| DATA HERE |
| |
-------------
-------------
| |
| DATA HERE |
-------------
3) 在第二个列表框后面绘制第一个列表框
如果有相同数量的物品(据我所知,这是你的情况),你将获得你想要的视觉效果。
希望能有帮助
编辑
此方法与当前模板不一致,但它是解决方案的一种变体。如果您选择此方法,还需要考虑设置列表框的样式,以便覆盖不明显,以及同步选择,以便在第一个列表框中选择一个项,清除第二个列表框中的选择。如果你想要键盘的可访问性,你需要一些奇特的逻辑……是的,当然,尼古拉斯·阿姆斯特朗是对的,但它并不像乍看起来那么复杂。键盘功能根本不是问题,但我知道这有多困难。我从来没有想过,我应该开始编辑我的初始设计,使事情更容易。