MobileInfo コレクションを一覧表示する DataGrid があります。DataGrid は で構成されSelectionUnit="FullRow"
ます。任意の行をクリックすると、行全体が選択され、さらにマウスがヒットした境界線のあるセルがポイントされます。
境界線の選択は、キーボード ナビゲーション中に移動します (例: Left
、Right
、Up
および ) Down
。セルの選択に基づいて、DataGridTextColumn から値を取得したい
注:この質問は、渡された入力に基づいて値を取得する方法(パラメーターを処理して値を取得する)について純粋に話しているものです。しかし、「WPF KeyBinding で DataGrid からセル情報を渡す方法は?」この質問は、UI から情報を渡す方法について説明しています。ここで、Paramater から値Androidを取得する必要があります。
出力画面がある画像を参照してください
上のスクリーン ショットでは、キーボード ナビゲーションに基づいて Android が選択され、セルの選択が変更されます。
私のXAMLソースコード:
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding MobileList, UpdateSourceTrigger=PropertyChanged}" SelectionUnit="FullRow" IsReadOnly="True">
<DataGrid.InputBindings>
<KeyBinding Key="C" Modifiers="Ctrl" Command="{Binding Path=DataContext.CopyToClipBoardCommand}" CommandParameter="{Binding }" />
</DataGrid.InputBindings>
<DataGrid.Columns>
<!--Column 1-->
<DataGridTextColumn Binding="{Binding MobileName}" Header="Name" />
<!--Column 2-->
<DataGridTextColumn Binding="{Binding MobileOS}" Header="OS" />
</DataGrid.Columns>
</DataGrid>
注:DataGridのSelectionUnitを変更せず、MVVMアプローチを使用して回答を提供してください
キーボード ナビゲーションに基づいてセル情報を渡す方法を教えてください。
XAML DataGrid に関連付けられている C# ソース コード
public class GridViewModel
{
public ObservableCollection<MobileInfo> MobileList { get; set; }
public GridViewModel()
{
MobileList = new ObservableCollection<MobileInfo>();
MobileList.Add(new MobileInfo { MobileName = "iPhone", MobileOS = "iOS" });
MobileList.Add(new MobileInfo { MobileName = "Xperia", MobileOS = "Android" });
MobileList.Add(new MobileInfo { MobileName = "Lumina", MobileOS = "Windows" });
}
}
public class MobileInfo
{
public string MobileName { get; set; }
public string MobileOS { get; set; }
}