的正确方法是什么?-6ren"> 的正确方法是什么?-我有一个员工 ID 和一个与该员工关联的图像作为项目中的资源(图像显示在员工姓名旁边的列表中)。 所以我认为是这样的 它不是有效的 XAML。 我想我可以-6ren">
gpt4 book ai didi

wpf - 的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-04 17:36:57 24 4
gpt4 key购买 nike

我有一个员工 ID 和一个与该员工关联的图像作为项目中的资源(图像显示在员工姓名旁边的列表中)。

所以我认为是这样的

<DataTemplate DataType="{x:Type m:Employee}">
<Grid>
<Image Grid.Column="0" Name="image" Source="../Images/{Binding Path=Id}.jpg"/>

它不是有效的 XAML。

我想我可以在代码隐藏中处理一些数据绑定(bind)事件并在那里创建路径?对我来说似乎并不理想。

我可以将路径存储在我的 Employee 类中,但这太糟糕了。

最佳答案

您必须使用 IValueConverter
这是一个简单的例子,传入 String.Format作为转换器参数

public class StringFormatToImageSourceConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (parameter is string)
{
return string.Format(parameter.ToString(), value);
}
return null;
}

public object ConvertBack(object value, Type targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}

用法:
<XXXX.Resources>
<local:StringFormatToImageSourceConverter x:Key="StringToImage" />
</XXXX.Resources>

<Image Source="{Binding Path=Id, Converter={StaticResource StringToImage}
, ConverterParameter=../Images/{0}.jpg}" />

有一种方法可以将其全部保存在 Xaml 中通过使用不可见的 TextBlock格式化字符串,但不是最佳实践。
<Grid>
<TextBlock x:Name="StringToImage" Visibility="Hidden" Text="{Binding Id, StringFormat=../Images/{0}.jpg}" />
<Image Source="{Binding Text, ElementName=StringToImage}"/>
</Grid>

关于wpf - <Image Source ="../Images/{Binding Path=Id}.jpg"/> 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15580855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com