我有了綁定到的項目IsSelected
屬性複選框一個DataGrid。我試圖創建一個功能,讓您通過點擊/在網格中選擇行拖動或點擊/ shift點擊/ CTRL點擊其他行,然後右擊>選擇設定的我的項目IsSelected
屬性。複選框被完美的工作,妥善雙向綁定到我的我的對象IsSelected
財產。WPF的DataGrid SelectedItems不取消
我也得到了90%,但是當我送DataGrid的SelectedItems
價值,它有時會發送一個爲選擇,但不再物品。
我發現的代碼從我的視圖模型
private void Select(object selectedObjects)
{
var items = (System.Collections.IList)selectedObjects;
var collection = items.Cast<ItemType>().ToList();
foreach (var item in collection)
item.IsSelected = true;
}
送DataGrid的SelectedItems
到命令here.
<DataGrid ItemsSource="{Binding MyItemList}">
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Select"
Command="{Binding Data.SelectCommand, Source={StaticResource BindingProxy}}"
CommandParameter="{Binding PlacementTarget.SelectedItems,RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}}" />
</ContextMenu>
</DataGrid.ContextMenu>
C#代碼這是我做的重現。
方案1:
- 控制負載,沒有被默認選中
- 我點擊和拖動來選擇所有選項
- 右擊並選擇
Select
- 所有複選框現在設置作爲託運,如預期
- 點擊第一行所以只有它強調
- 右鍵點擊通道上OOSE
Deselect
- 所有行的複選框被取消(錯了!)
方案2:
- 控制負荷,未選中任何
- 單擊並拖動,選擇前2項
- 權單擊並選擇
Select
,複選框得到遏制 - 取消選中行1和2
- 選擇第4行和第5行
- 右鍵單擊>
Select
- 現在檢查第1,2,4和5行。 (錯誤的)
- 取消選中1,2,4,和5
- 選擇行7和8
- 右鍵點擊>
Select
- 行1,2,7和8,現在被檢查。 (正是這樣)
我很難找出某種一貫的理由,它的行爲是這樣的。我最好的猜測是,當我右鍵點擊數據網格時,它不會像通常的選擇操作那樣工作。任何人有任何線索,爲什麼發生這種情況,或者我怎麼能強迫電網正確選擇行我告訴它?
對不起,我不是很明確,我試圖簡潔。我有一個viewmodel,上面的C#代碼來自viewmodel。該複選框正確綁定到我的對象的IsSelected屬性,這不是問題。 – DLeh
我想要做的是讓我的viewmodel中的另一個對象綁定到DataGrid的SelectedItems屬性,然後我的Select方法可以簡單地查看該列表,但它不會讓我綁定到SelectedItems屬性。這就是爲什麼我試圖將DataGrid的SelectedItems作爲參數發送到Select命令/方法 – DLeh
我想我意外地在您的答案上點擊了編輯而不是我的問題。對於那個很抱歉。 – DLeh