gpt4 book ai didi

.net - 如何根据来自转换器的数据对 WPF 数据网格进行排序?

转载 作者:行者123 更新时间:2023-12-04 05:47:24 27 4
gpt4 key购买 nike

问题:如何在数据来自转换器的列上对数据网格进行排序?

我有一个类似于:

public class MyViewModel
{
public string Name { get; set; }
public IEnumerable<string> Aliases { get; set; }
}

此外,我有一个自定义转换器映射 IEnumerable<string>只是一个 string .

我的 DataGrid 类似于:
<DataGrid ItemsSource="...">
<DataGrid.Columns>
<DataGridTextColumn Width="10" Header="..." Binding="{Binding Path=Name}" />
<DataGridTextColumn Width="10" Header="..." Binding="{Binding Path=Aliases, Converter={StaticResource myConverter}}" />
...

到现在为止还挺好。它按预期显示。问题在于排序。

按名称排序时,一切都很好。当按数据来自转换器的列排序时,我得到一个 .NET 异常:

The SortDescriptions added are not valid. The probable solutions are to set the CanUserSort on the Column to false, or to use SortMemberPath property on the Column, or to handle the Sorting event on DataGrid.



有一个解决方案建议修改 View 模型以具有类似于以下内容的属性:
public class AliasesMapping
{
public IEnumerable<string> Raw { get; set; }
public string Converted { get; set; }
}

但是......我想知道是否有更好或更标准的方法来解决这个问题。感觉在这个解决方案中,UI 限制正在渗透到 View 模型层。

更新:这是转换器
[ValueConversion(typeof(IEnumerable<string>), typeof(string))]
public class AliasFormatConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string converted = string.Empty;
var val = value as IEnumerable<string>;

if (val != null)
{
var list = new List<string>(val);
list.Sort();

converted = string.Join(",", list);
}

return converted;
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}

最佳答案

这未经测试,但无法格式化评论

SortMemberPath="FirstString"

Public string FirtString { get { return Aliases[0]; } }

public string Converted { get; set; } 没什么不同你想摆脱所以可能对你没有多大值(value)。我只是说这就是我要尝试的。

关于.net - 如何根据来自转换器的数据对 WPF 数据网格进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10503564/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com