我正在学习WPF并且不确定最好的方法是什么; 我有一个员工ID和与该员工关联的图像作为项目中的资源(图像显示在员工姓名旁边的列表中).
所以我觉得这样的事情
<DataTemplate DataType="{x:Type m:Employee}">
<Grid>
<Image Grid.Column="0" Name="image" Source="../Images/{Binding Path=Id}.jpg"/>
Run Code Online (Sandbox Code Playgroud)
它不是有效的XAML.
我想我可以在代码隐藏中处理一些数据绑定事件并在那里创建路径?对我来说似乎不太理想.
我可以在我的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;
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
<XXXX.Resources>
<local:StringFormatToImageSourceConverter x:Key="StringToImage" />
</XXXX.Resources>
<Image Source="{Binding Path=Id, Converter={StaticResource StringToImage}
, ConverterParameter=../Images/{0}.jpg}" />
Run Code Online (Sandbox Code Playgroud)
有一种方法可以Xaml
通过使用不可见TextBlock
的格式化字符串来保持全部,但不是最佳实践.
<Grid>
<TextBlock x:Name="StringToImage" Visibility="Hidden" Text="{Binding Id, StringFormat=../Images/{0}.jpg}" />
<Image Source="{Binding Text, ElementName=StringToImage}"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2273 次 |
最近记录: |