[英]WPF how to access other variable from same viewmodel?
为了在Telerik:RadGridView
上显示项目,通常我使用DataContext="{Binding [someViewModel]}"
和ItemSource="{Binding objectList, Mode=TwoWay}"
。
对于我的专栏,我将访问objectfield
。 总体情况如下所示:
<telerik:RadGridView DataContext="{Binding [someViewModel]}"
ItemSource="{Binding objectList, Mode=TwoWay}">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn>
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<CheckBox IsEnabled="{Binding enabledVar}"
IsChecked="{Binding isChecked, Mode=Twoway}"
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
想象在objectList
中将有10个项目。 objectList
每个项目都会有一个isChecked
变量,该变量可操作复选框IsChecked
属性。
我在同一个视图模型中有另一个名为enabledVar
变量,用于控制十个复选框的IsEnabled
属性。 enabledVar
不是的一部分objectList
,但我不能得到的价值。 请问该如何处理?
更新:
我找到了一些新的方向,但不确定是否有帮助。
<CheckBox IsEnabled="{Binding enabledVar,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType=telerik:RadGridView}}"
但是当然,仍然失败了。
任何帮助将不胜感激。
如果使用Ancestor,则必须绑定到DataContext
<CheckBox IsEnabled="{Binding Path=DataContext.enabledVar,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType=telerik:RadGridView}}"
另一个方法可能是使用元素绑定集名称
<telerik:RadGridView x:Name="myGrid" ...
然后在单元模板中绑定到它
<CheckBox IsEnabled="{Binding Path=DataContext.enabledVar, ElementName=myGrid}"
希望这可以帮助。
Update中建议的代码将不起作用,因为GridViewDataColumn不属于Visual树,因此无法访问DataContext。
你将不得不使用代理数据的结合,如建议在这里 。 您可以通过搜索“ wpf代理数据绑定”来获取更多示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.