- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个以这种方式构造的组合框的简单模板:
<ComboBox DockPanel.Dock="Left" MinWidth="100" MaxHeight="24"
ItemsSource="{Binding Actions}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" Width="100" />
<Image Source="{Binding Converter={StaticResource TypeConverter}}" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<TextBlock Text="{Binding Name}" Width="100" />
<!--<Image Source="{Binding Converter={StaticResource TypeConverter}}" /> -->
<Image Source="{StaticResource SecurityImage}" />
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var type = (Action)value;
var img = new BitmapImage();
switch (type.ActionType)
{
case ActionType.Security:
img.UriSource = new Uri("StructureImage", UriKind.Relative);
break;
case ActionType.Structural:
img.UriSource = new Uri("SecurityImage", UriKind.Relative);
break;
}
return img;
}
最佳答案
尝试使用 Josh 编写的 Switch Converter,应该对您有用:
开关转换器 –
A "switch statement" for XAML - http://josheinstein.com/blog/index.php/2010/06/switchconverter-a-switch-statement-for-xaml/
<Grid.Resources>
<e:SwitchConverter x:Key="ActionIcons">
<e:SwitchCase When="Security" Then="SecurithImage.png" />
<e:SwitchCase When="Structural" Then="StructureImage.png" />
</e:SwitchConverter>
</Grid.Resources>
<Image Source="{Binding Converter={StaticResource ActionIcons}}" />
/// <summary>
/// A converter that accepts <see cref="SwitchConverterCase"/>s and converts them to the
/// Then property of the case.
/// </summary>
[ContentProperty("Cases")]
public class SwitchConverter : IValueConverter
{
// Converter instances.
List<SwitchConverterCase> _cases;
#region Public Properties.
/// <summary>
/// Gets or sets an array of <see cref="SwitchConverterCase"/>s that this converter can use to produde values from.
/// </summary>
public List<SwitchConverterCase> Cases { get { return _cases; } set { _cases = value; } }
#endregion
#region Construction.
/// <summary>
/// Initializes a new instance of the <see cref="SwitchConverter"/> class.
/// </summary>
public SwitchConverter()
{
// Create the cases array.
_cases = new List<SwitchConverterCase>();
}
#endregion
/// <summary>
/// Converts a value.
/// </summary>
/// <param name="value">The value produced by the binding source.</param>
/// <param name="targetType">The type of the binding target property.</param>
/// <param name="parameter">The converter parameter to use.</param>
/// <param name="culture">The culture to use in the converter.</param>
/// <returns>
/// A converted value. If the method returns null, the valid null value is used.
/// </returns>
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// This will be the results of the operation.
object results = null;
// I'm only willing to convert SwitchConverterCases in this converter and no nulls!
if (value == null) throw new ArgumentNullException("value");
// I need to find out if the case that matches this value actually exists in this converters cases collection.
if (_cases != null && _cases.Count > 0)
for (int i = 0; i < _cases.Count; i++)
{
// Get a reference to this case.
SwitchConverterCase targetCase = _cases[i];
// Check to see if the value is the cases When parameter.
if (value == targetCase || value.ToString().ToUpper() == targetCase.When.ToString().ToUpper())
{
// We've got what we want, the results can now be set to the Then property
// of the case we're on.
results = targetCase.Then;
// All done, get out of the loop.
break;
}
}
// return the results.
return results;
}
/// <summary>
/// Converts a value.
/// </summary>
/// <param name="value">The value that is produced by the binding target.</param>
/// <param name="targetType">The type to convert to.</param>
/// <param name="parameter">The converter parameter to use.</param>
/// <param name="culture">The culture to use in the converter.</param>
/// <returns>
/// A converted value. If the method returns null, the valid null value is used.
/// </returns>
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
/// <summary>
/// Represents a case for a switch converter.
/// </summary>
[ContentProperty("Then")]
public class SwitchConverterCase
{
// case instances.
string _when;
object _then;
#region Public Properties.
/// <summary>
/// Gets or sets the condition of the case.
/// </summary>
public string When { get { return _when; } set { _when = value; } }
/// <summary>
/// Gets or sets the results of this case when run through a <see cref="SwitchConverter"/>
/// </summary>
public object Then { get { return _then; } set { _then = value; } }
#endregion
#region Construction.
/// <summary>
/// Switches the converter.
/// </summary>
public SwitchConverterCase()
{
}
/// <summary>
/// Initializes a new instance of the <see cref="SwitchConverterCase"/> class.
/// </summary>
/// <param name="when">The condition of the case.</param>
/// <param name="then">The results of this case when run through a <see cref="SwitchConverter"/>.</param>
public SwitchConverterCase(string when, object then)
{
// Hook up the instances.
this._then = then;
this._when = when;
}
#endregion
/// <summary>
/// Returns a <see cref="System.String"/> that represents this instance.
/// </summary>
/// <returns>
/// A <see cref="System.String"/> that represents this instance.
/// </returns>
public override string ToString()
{
return string.Format("When={0}; Then={1}", When.ToString(), Then.ToString());
}
}
关于.net - WPF ImageSource 与自定义转换器绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3204883/
我需要从用户那里获得图像文件路径并将图像存储在我的 sql server 数据库中。 我从用户那里获取文件并使用方法转换为 byte[] public static byte[] ImageToByt
我尝试做一个功能区工具栏。我的问题是它没有找到 ImageSource。这是我的简单代码:
我想为我的表单/窗口设置背景图像 like this guy但不是磁盘上的图像文件,而是内存中的 System.Drawing.Bitmap。 我需要做这样的事情: this.Background =
如何确定 ImageSource 的大小以像素为单位? ImageSource 对象有一个 Height 和一个 Width 属性,但它们以 1/96 英寸返回大小。 最佳答案 super 旧的帖子,
我正在尝试使用本地资源将图标放入按钮中。 (C# Visual Studio 2012) 在我的项目中,我有一个名为“Resources”的文件夹,其中包含“Icons/MyIcon.png” 以下代
我在图像控件上有多重绑定(bind)。我绑定(bind)了两个属性,一个是 bool 类型(IsLogged),一个是 typeof Uri(ProfilePhoto)。 XAML:
信息: 包:flutter 的 image_picker 插件,版本 0.6.3+1 仅 Android 版本,无 IOS 问题: 这是我选择图像的方法: Future pickImage(Ima
我的问题是图像加载似乎来自应用程序资源不正确。这是代码: BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.UriS
是否有任何简单的方法可以将 ImageSource 添加到堆栈并从中创建视频? 最佳答案 我已经上过这样的课了。我只需要提交我的“ImageInfo”,它是一个system.DrawingBitmap
我有一个 WPF 登录屏幕,我想将启动图像动态加载到其中。大多数情况下图像加载正常,但可能有十分之一的图像显示损坏,如下所示。 在 XAML 中,我有一个简单的图像控件。 我是通过绑定(bind)在
我编写了一个从操作系统获取文件图标并绑定(bind)到它们的应用程序,但是自从 System.Drawing.Icon对象不能用作 ImageSource在 Image 中控制,我不得不写一个conv
我使用 LeadTools 进行扫描。 我想将扫描图像转换为字节。 void twainSession_AcquirePage(object sender, TwainAcquirePageEvent
我是 WPF 的新手,正在尝试构建一个带有工具栏和图标的基本应用程序。我正在测试来自 Infragistics 的 XamRibbon 和功能区上显示的 ButtonTool 需要 ImageSour
我在 Xamarin.Forms 中的一个页面中的图像有一些问题。 基本上,我有 5 颗星排成一排,用户可以点击其中一颗星来给出评分。我有两张不同的图片,一张是彩色星星,另一张是黑色星星。如果用户点击
我有一个以这种方式构造的组合框的简单模板:
我正在使用 Viewbox创建一组我将动态绑定(bind)到 WPF View 的图标。 我正在绑定(bind)到资源名称并使用 Converter将资源名称转换为 ImageSource . 如果资
这个问题在这里已经有了答案: Convert System.Windows.Media.ImageSource to ByteArray (1 个回答) WPF Image to byte[] (7
我正在尝试通过给定的 base 64 字符串加载图像。 我有以下 XAML 图像: 我在类页面上有这个方法,它在构造函数中的 InitializeComponent() 之后调用: public v
我的项目文件夹中有一堆 *.tif 图像..我也将它们添加到我的 visual studio 项目中位于“Templates\Team Logos”的文件夹中 现在,如果我将图像源设置为: 行得通。
我正在使用 Akavache 下面的代码来缓存图像。 返回的是一个IBitmap,如何将这个IBitmap转为ImageSource? var url = "https://ashdbhjas/ima
我是一名优秀的程序员,十分优秀!