Ciao a tutti,
ho un problema nel focus di una textbox che fa parte dell'item template di una listview. In questa textbox posso scrivere, ma mi è stato chiesto che abbia un comportamento stile excel in modo che possa cambiare elemento anche con il focus attivo. Ho il problema che le chiavi di tastiera Left/Right/Up/Down non vengono recepite dall'evento keyDown:
Vi posto il codice XAML e .cs:
codice:
<ListView x:Name="ListModPVMA" ItemsSource="{Binding PlanToManage.PVMaObservable, Mode=TwoWay}" Width="Auto" HorizontalAlignment="Left" Height="Auto" Margin="0" VerticalAlignment="Top">
<ListView.ItemTemplate>
<DataTemplate>
<TextBox HorizontalAlignment="Left" x:Name="tbCella" Height="25" FontSize="14" Text="{Binding InData, Converter= {StaticResource PVMa_Converter}}" ToolTip="{Binding InData, Converter{StaticResource PVMa_TooltipConverter}}" DataContext="{Binding}" Loaded="tbCella_Loaded" Tag="{Binding QuarterHour}" Width="Auto" TextAlignment="Right" Cursor="Arrow" FontWeight="Bold" BorderThickness="1" Style="{DynamicResource PotenzeTextBoxStyle}" KeyDown="tbCella_KeyDown" MouseEnter="tbCella_MouseEnter" MouseLeave="tbCella_MouseLeave" GotMouseCapture="tbCella_GotMouseCapture" />
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical" MaxHeight="110" ItemWidth="Auto" MinHeight="110" ItemHeight="Auto"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
parte .cs
codice:
private void tbCella_KeyDown(object sender, KeyEventArgs e)
{
TextBox tb = sender as TextBox;
if (e.Key == System.Windows.Input.Key.Left || e.Key == System.Windows.Input.Key.Right ||
e.Key == System.Windows.Input.Key.Up || e.Key == System.Windows.Input.Key.Down)
{
ListView lw = tb.TryFindParent<ListView>();
int index = lw.SelectedIndex;
switch (e.Key)
{
............
}
e.Handled = true;
}
Il keydown non riconosce quelle 4 chiavi in WPF, esiste un evento della textbox in cui e.Key sia uno di quei 4 valori?
Grazie
Mike "The Ram"