缺乏关于该主题的问题可能表明这里有代码味道,但是......是否可以为类编写扩展方法并像属性一样对其进行数据绑定?
假设我提供了一个无法从根本上更改的类结构,但我想将其一系列布尔属性表示为字符串以用于显示目的。
简化的基类:
public class Transmission
{
public int ID { get; set; }
public bool Cancelled { get; set; }
public bool Stored { get; set; }
public bool Recorded { get; set; }
}
我的扩展方法:
public static class Extensions
{
public static string Status(this Transmission trans)
{
StringBuilder sb = new StringBuilder("|");
if (trans.Cancelled)
sb.Append("| Cancelled ");
if (trans.Recorded)
sb.Append("| Recorded ");
if (trans.Stored)
sb.Append("| Stored ");
sb.Append("||");
return sb.ToString();
}
}
为了进一步增加复杂性,我正在传递这些内容的列表,并且我正在尝试绑定到数据网格(XAML 经验非常有限)。
<GroupBox Header="Here is an amazing list of results for you to violate horribly.">
<DataGrid ItemsSource="{Binding Transmissions, Mode=OneWay}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Width="*" Header="Local ID" Binding="{Binding ID, Mode=OneWay}"/>
<DataGridTextColumn Width="*" Header="Status" Binding="{Binding Status, Mode=OneWay}"/>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
我已经测试了代码并且能够毫无困难地绑定到 ID。然而,“状态”根本没有被获取。绑定到扩展属性有什么技巧吗?或者只编写一个装饰器/外观类并绑定到它会更谨慎吗?
这就是您通常使用的模式,例如MVVM为了。您将属性添加到视图模型它们基于模型并且仅与视图相关。视图模型可以包含对模型的引用,以直接绑定到其属性或将它们镜像到视图模型上(为了解耦,我会选择后者)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)