我有一个WPF ListBox,它绑定到一些元素(我不能自定义)。 绑定本身也是一个密封的类。
该元素有一个ToString,它接受CultureInfo参数。 我想绑定到该特定表示 - 通过传递该参数(我将从正在运行的线程中获取它)。 无论如何都要指定绑定来显示特定的表示吗?
XAML:
<ListBox Height="212" HorizontalAlignment="Left" Margin="6,6,0,0"
Name="listBoxTriggers" VerticalAlignment="Top" Width="183" />
项目来源:
listBoxTriggers.ItemsSource = _triggers
后面的代码(我想调用的方法)
trigger.ToString(cultureInfo);
答案 0 :(得分:1)
注意:在this link处使用转换器是一个不错的选择。
如果我理解正确,您希望ListBox使用特定的文化显示ToString()。虽然这可能是可能的(参见上面提到的链接),但解决方法是使用DTO来保存触发器的ID和您正在查找的ToString()表示。
public class TriggerDto
{
public int TriggerId { get; set; }
public string TriggerName { get; set; }
}
创建一个新的List,然后循环遍历所有触发器,添加新的TriggerDto对象。
List<TriggerDto> triggerDtos = new List<TriggerDto>();
foreach (Trigger trigger in _triggers)
{
triggerDtos.Add(new TriggerDto() { Id = trigger.Id, TriggerName = trigger.ToString(cultureInfo) });
}
this.TriggerDtos = triggerDtos;
将绑定设置为TriggerDtos。
当用户选择TriggerDto时,您只需要使用其ID来获取您想要使用的真实Trigger对象。
免责声明:此处可能存在拼写错误。我直接在答案中键入了代码,而不是在Visual Studio中。