Avalonia 元素集合实现Menus(图片资源文件绑定后不显示问题)

news/2025/1/11 15:28:22/文章来源:https://www.cnblogs.com/ff-king/p/18665748
<SplitView IsPaneOpen="True"DisplayMode="Inline"OpenPaneLength="200"CompactPaneLength="60">
<SplitView.Pane><Grid Margin="0,5"><!-- 定义行 --><Grid.RowDefinitions><RowDefinition Height="40"/><!-- 标题行 --><RowDefinition Height="1"/><!--分隔线--><RowDefinition Height="*"/><!-- 内容行 --></Grid.RowDefinitions><StackPanel Grid.Row="0"><TextBlock Text="开发调试" Padding="8" FontSize="16" TextAlignment="Center"/></StackPanel><Border Grid.Row="1" Background="#252525" Height="1"/><StackPanel HorizontalAlignment="Center" VerticalAlignment="Top" Grid.Row="2" Width="200"><Button Background="Transparent" Cursor="Hand" Grid.Row="0"><Grid Width="200"><Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><Image Source="avares://AvaToolPro/Assets/Icons/index/other.png" Margin="15,2,5,2" Width="20" Height="20" Grid.Column="0"/><TextBlock FontSize="12" VerticalAlignment="Center" TextAlignment="Left" Grid.Column="1">文件⇌Base64</TextBlock></Grid></Button><Border Grid.Row="1" Background="#252525" Height="1" Width="180"/><Button Background="Transparent" Cursor="Hand" Grid.Row="0"><Grid Width="200"><Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><Image Source="avares://AvaToolPro/Assets/Icons/index/other.png" Margin="15,2,5,2" Width="20" Height="20" Grid.Column="0"/><TextBlock FontSize="12" VerticalAlignment="Center" TextAlignment="Left" Grid.Column="1">图片⇌Base64</TextBlock></Grid></Button><Border Grid.Row="1" Background="#252525" Height="1" Width="180"/><Button Background="Transparent" Cursor="Hand" Grid.Row="0"><Grid Width="200"><Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><Image Source="avares://AvaToolPro/Assets/Icons/index/other.png" Margin="15,2,5,2" Width="20" Height="20" Grid.Column="0"/><TextBlock FontSize="12" VerticalAlignment="Center" TextAlignment="Left" Grid.Column="1">JSON格式校验</TextBlock></Grid></Button><Border Grid.Row="1" Background="#252525" Height="1" Width="180"/><ItemsControl ItemsSource="{Binding MenuList}"><ItemsControl.ItemTemplate><DataTemplate><StackPanel><Button ToolTip.Tip="{Binding Tips}" Tag="{Binding Tag}" Background="Transparent" Cursor="Hand"><Grid Width="200"><Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><Image Source="{Binding Icon}" Stretch="UniformToFill" Margin="15,2,5,2" Width="20" Height="20" Grid.Column="0"/><TextBlock FontSize="12" VerticalAlignment="Center" TextAlignment="Left" Grid.Column="1" Text="{Binding Title}"/></Grid></Button><Border Background="#252525" Height="1" Width="180" Margin="0,5,0,0"/></StackPanel></DataTemplate></ItemsControl.ItemTemplate></ItemsControl></StackPanel></Grid>
</SplitView.Pane><Grid><TextBlock Text="Content"FontSize="24"VerticalAlignment="Center"HorizontalAlignment="Center"/>
</Grid>
--ViewModel
public DevPageViewModel()
{MenuList = new ObservableCollection<Menus.LeftMenus>(new List<Menus.LeftMenus>{new Menus.LeftMenus("文件⇌Base64", "Dev_FileAndBase64Page","文件与Base64互转","avares://AvaToolPro/Assets/Icons/index/other.png",true),new Menus.LeftMenus("图片⇌Base64", "Dev_ImageAndBase64Page","图片与Base64互转","avares://AvaToolPro/Assets/Icons/index/other.png",true),new Menus.LeftMenus("JSON格式校验", "Dev_JsonParsePage","JSON文本格式解析校验","avares://AvaToolPro/Assets/Icons/index/other.png",true),new Menus.LeftMenus("JSON⇌XML", "Dev_JsonAndXmlPage","JSON文本与XML互转","avares://AvaToolPro/Assets/Icons/index/other.png",true),new Menus.LeftMenus("其他辅助操作", "Dev_OtherPage","其他辅助操作","avares://AvaToolPro/Assets/Icons/index/other.png",true)});
}

--资源图片加载
--直接绑定资源图片文件路径,图片不能正常加载,因为 Image Source 绑定需要 Avalonia.Media.IImage 类型数据,需要将资源图片转BitMap 后绑定,需要在函数中通过AssetLoader 获取资源文件后转为BitMap

    this.Title = Title;this.Tag = Tag;this.Tips = Tips;this.Enable = Enable;// 使用 AssetLoader 从嵌入资源加载 Bitmapvar uri = new Uri(Icon);using (var stream = AssetLoader.Open(uri)){this.Icon = new Bitmap(stream);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/867785.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Text-Switch的练习1

Text-Switch的练习1 键盘录入一个从一到七的数字表示星期 星期一到星期五是工作日 星期六和星期日是休息日 Scanner xq=new Scanner(System.in);System.out.println("请输入一个一到七之间的数字");int week=xq.nextInt();switch(week){case 1 :case 2 :case 3 :case…

Omnissa Dynamic Environment Manager 2412 - 个性化动态 Windows 桌面环境管理

Omnissa Dynamic Environment Manager 2412 - 个性化动态 Windows 桌面环境管理Omnissa Dynamic Environment Manager 2412 - 个性化动态 Windows 桌面环境管理 Simplify management of user profiles, environment settings, and policies across desktops and apps. 请访问原…

stata 检查哪些变量有缺失值

ssc install nmissing nmissing 说明这十个变量有缺失

Text-IfElse的练习1

Text-IfElse的练习1 某商场有vip的会员制,根据不同的会员会有不同的折扣,假设商品总价为1000,键盘录入会员级别,并计算出最终支付的钱 一级会员打九折;二级会员打八折;三级会员打七折;不是会员原价,打骨折int price=1000;Scanner mall=new Scanner(System.in);System.o…

Text-While循环的练习1

Text-While循环的练习1 判断一个数是否为回文数 回文数规则为:回文数就是一个数倒过来跟它本身相同,例如121,212 Scanner ba=new Scanner(System.in);System.out.println("请输入一个数字:");int i=ba.nextInt();int k=i;int num=0;while(k!=0){int g=k%10;//分离出…

Text-For循环的练习1

Text-For循环的练习1 键盘录入一个两位数的数字,表示范围 用for循环找出既能被3整除又能被5整除的数有多少个 int count=0;Scanner satisyf=new Scanner(System.in);System.out.println("请输入范围的开始:");int number=satisyf.nextInt();System.out.println(&quo…

Text-For循环的练习2

Text-For循环的练习2 用for循环求出1-100之间的偶数的和 int count=0;for(int i=1;i<=100;i++){if(i%2==0){//能被2整除的数就是偶数count+=i;}}System.out.println(count);代码运行结果如下图所示:

Text-For循环的练习3

Text-For循环的练习3 用for循环语句实现1-10的累加 int count=0;for(int i=1;i<=10;i++){count+=i;}System.out.println(count);代码运行结果如下图所示:

console.log字体背景颜色设置

console.log(%c[XX平台] -- Login Success,background: dodgerblue; color: white; padding: 4px; border-radius: 4px;, );学而不思则罔,思而不学则殆!

medusa: 牛逼密码破解工具

hw结束,十一长假,最近的股市暴涨跟暴跌,机构调整,项目减少,裁人等等发生了很多事情,变化的继续变化,不变的就是变化,回归技术研究的初心,继续研究和实战。以前曾经在研究ssh暴力破解的时候研究过medusa,最近对比测试fscan、hydra、ntscan等工具时,发现medusa可以在l…

Text-数组的练习3

Text-数组的练习3 定义一个数组,里面存入1-5 打乱他们的顺序 int arr[]={1,2,3,4,5};int i;Random r=new Random();for ( i = 0; i < arr.length; i++) {int x=r.nextInt(5);//产生随机索引与arr[i]索引换位置int temp=arr[i];arr[i]=arr[x];arr[x]=temp;}for (i = 0; i&l…

【源码】Kafka订制协议如何处理粘拆包

前言 在上一篇随笔中,我们探讨了如何使用 Netty 处理自定义协议中的粘包和拆包问题。Netty 提供了高度封装的 API,帮助开发者轻松应对这一挑战,因此很多人都对其解决方案非常熟悉。 但如果我们直接使用 Java NIO 来实现类似的功能,应该怎么做呢? Kafka,作为一个成熟的分布…