【问题标题】:WPF display member path to a method with parametersWPF显示带有参数的方法的成员路径
【发布时间】:2012-11-05 23:36:31
【问题描述】:

我有一个 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);

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    注意:this link 有一个使用转换器的好选择。

    如果我理解正确,您希望您的 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 中。

    【讨论】:

      猜你喜欢
      • 2023-02-10
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多