使用Avalonia在项目中遇到的问题——Avalonia treeview节点前增加一个小图标

先看效果图

 

上代码

<UserControl xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:vm="using:Ava_SplitView.ViewModels"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d" d:DesignWidth="300" d:DesignHeight="500"
             x:Class="Ava_SplitView.Views.TreeView">
    
    <Design.DataContext>
        <vm:TreeViewMode/>
    </Design.DataContext>
    
    <StackPanel>
        <TreeView Items="{Binding Items}"
                  Width="400" Height="480"
                  HorizontalAlignment="Left">
            <TreeView.DataTemplates>
                <TreeDataTemplate ItemsSource="{Binding Subfolders}">
                    <Border Background="Transparent">
                        <StackPanel Orientation="Horizontal">  
                <!--增加图片--> <Image Source="{Binding playSource}" Width="20" Height="20" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="1 0 0 0"></Image> <TextBlock Width="234" x:Name="content" TextTrimming="CharacterEllipsis" Text="{Binding strNodeText}" Margin="5 0 0 0" VerticalAlignment="Center"> <ToolTip.Tip> <StackPanel> <TextBlock Text="{Binding ElementName=content,Path=Text}"></TextBlock> </StackPanel> </ToolTip.Tip> </TextBlock> </StackPanel> </Border> </TreeDataTemplate> </TreeView.DataTemplates> </TreeView> </StackPanel> </UserControl>

 注意Image的Source使用的时Binding 需要一个图片对象

看后台代码

public IBitmap UriToBitmap(string uri)
        {
            IBitmap bitmap = null;

            var assets = AvaloniaLocator.Current.GetService<IAssetLoader>();
            bitmap = new Bitmap(assets.Open(new Uri(uri)));
            if (bitmap == null)
            {
                bitmap = new Bitmap(uri);
            }
            return bitmap;
        }

 

posted @ 2023-01-05 09:55  乡野小猫  阅读(371)  评论(0编辑  收藏  举报