【发布时间】:2013-03-22 22:27:49
【问题描述】:
我有一个员工 ID 和一个与该员工相关联的图像作为项目中的资源(该图像显示在员工姓名旁边的列表中)。
所以我认为是这样的
<DataTemplate DataType="{x:Type m:Employee}">
<Grid>
<Image Grid.Column="0" Name="image" Source="../Images/{Binding Path=Id}.jpg"/>
这不是有效的 XAML。
我想我可以在代码隐藏中处理一些数据绑定事件并在那里创建路径?对我来说似乎并不理想。
我可以将路径存储在我的 Employee 类中,但这太糟糕了。
【问题讨论】:
-
谢谢,希望保留一切 xaml...
-
如果你想把它全部保存在 XAML 中,你必须使用基于 Id 值的 DataTriggers。
<DataTrigger Binding="{Binding Id}" Value="1"><Setter Property="Source" TargetName="Image" Value="../Images/1.jpg"/></DataTrigger>。另外,请改用支持透明度的 PNG。 -
您的场景正是绑定转换器的用途。
-
迟到了,但我认为不应该永远为了在 XAML 中做任何事情而选择 XAML。为此目的创建了价值转换器。下一个最好的事情是实现自定义标记扩展,它允许您在标记中使用自定义逻辑 - 但您仍然在某处依赖 C# 代码。过于努力地保留它 XAML 不可避免地会导致不必要且混乱的标记。
标签: wpf data-binding