1、图片
- 图片显示
Source设置为固定的图片全路径时,可以直接设置;
但是用Binding绑定图片时,需要是Bitmap类型,即 Avalonia.Media.Imaging.Bitmap(Stream stream);
<Image Grid.Column="0" Grid.Row="2" Width="11" Source="/Assets/icon/fav.png" HorizontalAlignment="Center" VerticalAlignment="Center"></Image> <Image Cursor="Hand" Name="Signature" Tapped="Tapped_Detail" Source="{Binding MailDetailModel.SignImage, Converter={StaticResource ImgConverter}}"></Image>
- 图片单击
1、使用Tapped=“Tapped_Detail” Tapped_Detail定义在页面后端的cs代码中
2、使用Image.GestureRecognizers,其中没有TapGestureRecognizer【不可用】
3、使用<Button>包裹,命令可写在viewmodel中
注意设置Button的属性
<Button Command="{Binding ShowDecryptCert}" BorderThickness="0" Background="White">
<Image Source="{Binding MailDetailModel.ResolveResult, Converter={StaticResource MailResolveResultDecryptConverter}}"></Image>
</Button>
2、文本TextBlock
- 文本截断与显示不全用ToolTip
<TextBlock Text="{Binding Subject}" Width="180" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" ToolTip.Tip="{Binding Subject}"></TextBlock>
参考:WPF 文字换行TextWrapping 显示不全用省略号TextTrimming 显示不全弹提示内容ToolTip
注意宽度的设置:
如果控件位于grid中,则设置列宽,如下:
<Grid VerticalAlignment="Center" Background="Transparent"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="180"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> </Grid.ColumnDefinitions> <TextBlock x:Name="content" Margin="10" Text="{Binding FolderName}" FontSize="14" Grid.Column="1" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" ToolTip.Tip="{Binding FolderName}"/>
ToolTip.Placement="Right" 右下角
Left:左下角
AnchorAndGravity:底部中间
想置于上方,必须同时设置这两个:ToolTip.Placement="Top" ToolTip.VerticalOffset="-5" 【因为原点在左上角,往下为正】
- 文本绑定多个值,单击事件获取
通过ToolTip去传递另一个对象(不需要其显示,通过ShowDelay 来控制其不显示【鼠标放在上面的显示需要等待的毫秒数】)
<TextBlock Cursor="Hand" Name="Receiver" Tapped="ShowSenderInfo" Classes="B" Foreground="{StaticResource GrayBrush3}" Text="{Binding NickName}" ToolTip.Tip="{Binding Address}" ToolTip.ShowDelay="3000"></TextBlock>
后台获取ToolTip绑定的对象
public async void ShowSenderInfo(object Sender, Avalonia.Interactivity.RoutedEventArgs e) { try { var sender = Sender as TextBlock; if (sender == null) return; string mailaddress = ToolTip.GetTip(sender).ToString(); //联系人的邮箱地址 } catch (Exception) { } }
3、ListBox
右键事件
PointerPressed 事件,xml中 PointerPressed="ListBox_MouseTap"
private void ListBox_MouseTap(object sender, Avalonia.Input.PointerPressedEventArgs e) { try { if (e.MouseButton == Avalonia.Input.MouseButton.Right) { MyListBox control = null; if (sender is MyListBox) control = sender as MyListBox; if (control != null && control.SelectedItem != null) { MailListModel model = control.SelectedItem as MailListModel; if (model != null) { model.IsRightSelected = true; vm.SelectedItem = model; } } } } catch (Exception ex) { LogHelper.AddErrorLog(ex); } }