簡體   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