我有一个IntPtr封装在一个非托管/管理边界上,对应一个Icon Handle.通过FromHandle()方法将它转换为Icon是微不足道的,直到最近才令人满意.
基本上,我已经有足够的线程怪异了,因为我一直在玩MTA/STA舞蹈以保持托管的WinForm不会破坏应用程序的主要(WPF-tastic)UI太脆弱而无法坚持.所以WinForm必须要去.
那么,我怎样才能获得Icon的ImageSource版本?
注意,我尝试过ImageSourceConverter无济于事.
顺便说一下,我可以获得一些但不是所有涉及的图标的底层资源,它们通常存在于我的应用程序的程序集之外(事实上,它们通常存在于非托管的dll中).
我在"系统的默认图标"中引用的是我在Office等应用程序中看到的打开/新建/保存图标.
我想知道我是否可以某种方式参考这些,因为它们看起来像标准图标.或者我是否必须在其他地方找到这些图标并将它们嵌入我的应用程序中?
我有一个简单的WPF XAML窗口,我需要在以下XAML中创建一个StaticResource密钥。
XAML源代码是
<Window x:Class="WpfApplication1.Trigger"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:super="clr-namespace:WpfApplication1"
Title="Trigger" Height="300" Width="300">
<Grid>
<Border x:Name="m_Border" Width="100" Height="30" HorizontalAlignment="Center" VerticalAlignment="Top" Background="#FFF2FFC6" Margin="0,20,0,0">
<Button x:Name="btn" Content="iApp" HorizontalAlignment="Center" VerticalAlignment="Center" Width="75" Visibility="{Binding IsMouseOver,ElementName=m_Border, Converter={StaticResource BooleanToVisibilityConverterKey}, ConverterParameter=Normal}"/>
</Border>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
我的转换器C#源代码:
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Data;
namespace WpfApplication1
{
public enum BooleanToVisibilityConverterType
{
Normal = 1,
Reverse = 2
}
public class BooleanToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo …Run Code Online (Sandbox Code Playgroud)