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