繁体   English   中英

WPF如何从相同的视图模型访问其他变量?

[英]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.

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