1

我有一个 WPF 列表框,我将其绑定到一些元素(我无法自定义)。绑定本身也是一个密封类。

该元素有一个 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);
4

1 回答 1

1

注意:在这个链接上有一个使用转换器的好选择。

如果我理解正确,您希望您的 ListBox 使用特定的文化显示 ToString() 。虽然这可能是可能的(参见上面提到的链接),但一种解决方法是使用一个DTO,它包含触发器的 ID 和您正在寻找的 ToString() 表示。

public class TriggerDto
{
    public int TriggerId { get; set; }
    public string TriggerName { get; set; }
}

创建一个新列表,然后循环遍历所有触发器,添加新的 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 中。

于 2012-11-17T14:31:45.920 回答