1

我有几种情况,我有一个我想声明为只读的属性,但也解释了如何使用 [Display(Description="")] 属性计算/设置它。如果可能的话,我想在元数据中执行此操作,而不是在数据表单本身中覆盖。

这是一个例子:

    [Display(Description = "Total number of travel hours, calculated as total hrs worked - actual working hrs this month")]
    public decimal TravelHours
    {
        get
        {  
            return this.TotalHrsWorked - this.ActualWorkedHours;
        }
    }

当我绑定到 DataForm 和 DataField 中的此属性时,这不会将描述显示为DescriptionViewer 。

似乎当我设置 [ReadOnly] 属性时它隐藏了 DescriptionViewer,甚至在数据表单 xaml 中设置 DescriptionViewerVisibility=Visible 仍然没有改变它。此外,任何计算属性(无设置器)似乎默认强制执行此属性。这有点烦人,因为这些是我真正想要展示 descriptionviewer 的。

到目前为止,我发现的唯一解决方法是使属性不是只读的并添加一个虚拟设置器(用于计算的属性)。这似乎是一个杂牌。

有没有办法在只读属性上显示数据表单/数据字段描述查看器?

4

2 回答 2

1
[Display(Order = 6, Name = "CountryLabel", Description = "CountryDescription",
ResourceType = typeof(EntityDataStrings))]

包含和EntityDataStrings值的资源文件在哪里?"CountryLabel""CountryDescription"

于 2010-11-04T15:16:43.047 回答
1

是的,我之前遇到过同样的问题,但没有尝试管理。Display Attribute 和 ReadOnly Attribute 是密封的,您不能从它们继承。您可以包装它们并创建另一个属性,但您的数据表单现在没有此属性。所以您不能...

也许你可以在ReadOnlyTemplate中做不同的事情

        <dataFormToolkit:DataForm.ReadOnlyTemplate>
          <DataTemplate>
              <Grid>                
            <dataFormToolkit:DataField Label="{Binding ReadOnlyLabel,
                Converter=ReadOnlyOrNotConverter}" >
                <TextBox Text="{Binding Path=ReadOnlyValueEtc, Mode=TwoWay}" />
            </dataFormToolkit:DataField>

希望有所帮助,

问候!

于 2012-10-17T14:57:26.940 回答