我有一个GridView,在GridView的DateTemplate里面我有一个网格,为此我想处理要处理的回车键事件。现在我正在使用Tapped事件,当通过鼠标点击它时它工作正常。我也尝试过使用Keyup和Keydown事件,但没有一个是触发事件。
Xaml代码:
<DataTemplate x:Key="NormalTemplate" x:DataType="models:ProductLocal">
<Grid Height="140" Width="140" Tag="{Binding}" Tapped="TappedEvent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="{x:Bind Name}" VerticalAlignment="Center" HorizontalAlignment="Center" Height="50" Margin="4" Grid.Row="0" TextWrapping="WrapWholeWords" MaxLines="2" TextTrimming="CharacterEllipsis"></TextBlock>
<TextBlock Grid.Row="1" Margin="4" HorizontalAlignment="Center" TextWrapping="Wrap" MaxLines="2" TextTrimming="CharacterEllipsis">
<Run Text="{x:Bind SomeText}"></Run>
</TextBlock>
<customcontrols:CustomButton Grid.Row="2" Margin="4" Tag="{Binding}" Style="{StaticResource ButtonNoHoverStyle}" HorizontalContentAlignment="Right" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Tapped="EditProduct_Tapped">
<Button.Content>
<Image Source="../Assets/Icons/iconEditNormal.png" Height="44" CacheMode="BitmapCache"></Image>
</Button.Content>
</customcontrols:CustomButton>
</Grid>
</DataTemplate>
答案 0 :(得分:0)
如果在单击鼠标按钮时需要事件,请尝试使用
MouseUp="UserControl1_MouseUp" MouseDown="UserControl1_MouseDown"
根据您的需要。 Tapped事件用于触摸显示,键事件用于处理与键盘的交互。
答案 1 :(得分:0)
我做了一些尝试,这是我的网格:
<Grid Name="test" Height="140" KeyUp="Grid_KeyUp" Background="LightBlue" >
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBox Text="txttest" VerticalAlignment="Center" HorizontalAlignment="Center" Height="50" Margin="4" Grid.Row="0" IsReadOnly="True"
></TextBox>
<TextBox Grid.Row="1" Margin="4" HorizontalAlignment="Center" TextWrapping="Wrap" >
</TextBox>
<Button Grid.Row="2" Margin="4,4,0,-9"
HorizontalContentAlignment="Right"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch" >
<Button.Content>
<Image Height="44" ></Image>
</Button.Content>
</Button>
</Grid>
代码背后的代码:
private void Grid_KeyUp(object sender, KeyEventArgs e)
{
MessageBox.Show(e.Key.ToString());
}
答案 2 :(得分:0)
要获得Grid
捕获键盘输入,它只有一个选项 - Grid
内的控件具有焦点但不处理输入,因此它会冒泡到Grid
。
Grid
本身无法获得焦点,因为只有来自Control
的类可以被聚焦,而Grid
只是一个布局控件,它没有此功能。
要解决此问题,您可以将KeyDown
事件添加到GridView
本身,然后使用SelectedItem
知道 Enter 时选择了哪个项目按下了kbd>按钮。
在XAML中,您在KeyDown
上设置GridView
事件:
<GridView x:Name="MyGridView" KeyDown="GridView_KeyDown">
现在在代码隐藏中:
private void Grid_KeyDown(object sender, KeyRoutedEventArgs e)
{
var gridView = (GridView)sender;
if (e.Key == Windows.System.VirtualKey.Enter)
{
var selectedItem = gridView.SelectedItem;
//do something
}
}