如何解决我可以通过ListView项与WPF中的ImageAwesome进行图标绑定吗?
我使用“ FontAwesome.WPF”小工具。
这是ListView对象的外观
public class Item
{
public string LocalizationNameVariable { get; set; }
public string LocalizationDescriptionVariable { get; set; }
public FontAwesomeIcon IsAlertToggleActive { get; set; }
}
这是ListView列当前的样子:
<GridViewColumn Header="{Binding Translation.IsAlertActive,FallbackValue=IS_ALERT_ACTIVE}" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid Height="24" Width="24">
<fa:ImageAwesome Visibility="Visible" Icon="ToggleOff" MouseUp="AlertModeAlertActiveToggle_MouseUp" />
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
在TextBox中,我使用以下内容,此处的值来自ListView,并存储在有效的项目中。
<TextBox d:DataContext="{d:DesignInstance models:Item}" Text="{Binding (models:Item.AlertModeMinSellPriceIsUndercutPrice)}" MaxLength="12" Height="24" Width="65" PreviewTextInput="TxtBoxMinSellPriceIsUndercutPrice_OnPreviewTextInput"></TextBox>
但是我希望能够在两个方向上更改切换图标的值。
我必须使用PropertyChanged还是FontAwesome无法做到?
解决方法
您应该始终在任何视图模型上实现已更改的inotify属性。
Item是一个视图模型。
如果阅读了fontawesome md,它会指出在示例项目中绑定图像的示例。
主窗口在这里:
<fa:FontAwesome
Icon="{Binding Path=Icon}"
FontSize="{Binding ElementName=FontSizeSlider,Path=Value}"
VerticalAlignment="Center" Margin="0,10,0" />
视图模型在这里:
public class MainViewModel
{
public ObservableCollection<IconDescription> Icons { get; set; }
public MainViewModel()
{
Icons = new ObservableCollection<IconDescription>();
var icons = Enum.GetValues(typeof (FontAwesomeIcon)).Cast<FontAwesomeIcon>()
.Where(t => t != FontAwesomeIcon.None)
.OrderBy(t => t,new IconComparer());
foreach (var icon in icons)
{
var memberInfo = typeof(FontAwesomeIcon).GetMember(icon.ToString()).FirstOrDefault();
if(memberInfo == null) continue; // alias
foreach (var cat in memberInfo.GetCustomAttributes(typeof(IconCategoryAttribute),false).Cast<IconCategoryAttribute>())
{
var desc = memberInfo.GetCustomAttributes(typeof(DescriptionAttribute),false).Cast<DescriptionAttribute>().First();
var id = memberInfo.GetCustomAttributes(typeof(IconIdAttribute),false).Cast<IconIdAttribute>().FirstOrDefault();
Icons.Add(new IconDescription { Category = cat.Category,Description = desc.Description,Icon = icon,Id = id == null ? null : id.Id });
}
}
}
public class IconComparer
: IComparer<FontAwesomeIcon>
{
public int Compare(FontAwesomeIcon x,FontAwesomeIcon y)
{
return String.Compare(x.ToString(),y.ToString(),System.StringComparison.InvariantCultureIgnoreCase);
}
}
}
public class IconDescription
{
public string Description { get; set; }
public FontAwesomeIcon Icon { get; set; }
public string Category { get; set; }
public string Id { get; set; }
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。