RIA服务/ DataForm:如何使用ReadOnly&描述属性在一起

时间:2010-06-20 08:50:35

标签: c# silverlight wcf wcf-ria-services dataform

我有几种情况,我有一个我想要声明readonly的属性,但也解释了如何使用[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&中绑定到此属性时,这不会将描述显示为DescriptionViewer。数据字段

似乎当我设置[ReadOnly]属性时它隐藏了DescriptionViewer,甚至在dataform xaml中设置DescriptionViewerVisibility = Visible仍然不会改变它。此外,任何计算的属性(无设置器)似乎都默认强制使用此属性。这有点烦人,因为这些是我真正想要展示描述查看器的那些。

到目前为止我发现的唯一方法是使属性不是只读并添加一个虚拟设置器(用于计算属性)。这看起来像一块垃圾。

有没有办法在readonly属性上显示dataform / datafield descriptionview?

2 个答案:

答案 0 :(得分:1)

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

其中EntityDataStrings是包含"CountryLabel""CountryDescription"值的资源文件。

答案 1 :(得分:1)

对, 我之前遇到过同样的问题,但没有尝试管理。 显示属性和ReadOnly属性是密封的,你不能从它们继承。你可以包装它们并创建另一个属性,但你的数据形式现在不具备这个属性。所以你不能......

也许你可以在 ReadOnlyTemplate

中做不同的事情
        <dataFormToolkit:DataForm.ReadOnlyTemplate>
          <DataTemplate>
              <Grid>                
            <dataFormToolkit:DataField Label="{Binding ReadOnlyLabel,
                Converter=ReadOnlyOrNotConverter}" >
                <TextBox Text="{Binding Path=ReadOnlyValueEtc, Mode=TwoWay}" />
            </dataFormToolkit:DataField>

希望有所帮助,

问候!