在我的 MVVM 模型中,我將 UserControl 命名為:
x:名稱=“根”
在我的視圖模型中有一個名為 AllChecked 的布林值,顧名思義,這應該系結到 xaml 檔案中的復選框,指示資料網格中的所有行是否應該被選中。
在我的 xaml 檔案中,我有一個資料網格,例如:
<DataGrid ItemsSource="{Binding SomeObservableCollection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding IsSelected, UpdateSourceTrigger=PropertyChanged}"
<DataGridCheckBoxColumn.Header>
<CheckBox IsChecked="{Binding DataContext.AllChecked, ElementName=root, Mode=TwoWay}" HorizontalAlignment="Center"/>
</DataGridCheckBoxColumn.Header>
</DataGridCheckBoxColumn>
<DataGridTextColumn Header="Column A" Binding="{Binding Path=a}" Width="120" IsReadOnly="true"/>
<DataGridTextColumn Header="Column B" Binding="{Binding Path=b, StringFormat=dd-MM-yyyy}" Width="120" IsReadOnly="true"/>
<DataGridTextColumn Header="Column C" Binding="{Binding Path=c}" Width="90" IsReadOnly="true"/>
<DataGridTextColumn Header="Column D" Binding="{Binding Path=d}" IsReadOnly="true" Width="130" />
</DataGrid.Columns>
</DataGrid>
當我啟動應用程式時,AllChecked 的系結不起作用,錯誤是
“找不到來源:ElementName = root”
如果我從 ElementName 中洗掉 root 并再次重寫它,它會突然起作用。我不知道發生了什么,但這似乎是某種時間問題,在定義 UserControl 的 x:Name 之前設定了系結,也許?
任何人都可以在這里提供幫助嗎?
uj5u.com熱心網友回復:
該列不屬于 的邏輯樹DataGrid。所以 WPF 不知道從哪里獲得DataContext. 這個問題的典型解決方案是一種叫做BindingProxy. 讀這個:
https://thomaslevesque.com/2011/03/21/wpf-how-to-bind-to-data-when-the-datacontext-is-not-inherited/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/461820.html
