Silverlight/WPF Viewmodel最佳实践

Silverlight/WPF Viewmodel最佳实践,wpf,silverlight,binding,Wpf,Silverlight,Binding,假设我正在从数据服务中读取一些book对象,并使用每个结果创建一个ViewModel,以便在列表框或数据网格中显示 public class BookViewModel { public BookViewModel(DataService.BookResult B) { this.CurrentBook = B; //other details elided } 如果此ViewModel与数据服务中的book对象具有许多完全相同的属性,那么是否

假设我正在从数据服务中读取一些book对象,并使用每个结果创建一个ViewModel,以便在列表框或数据网格中显示

public class BookViewModel {
    public BookViewModel(DataService.BookResult B) {
        this.CurrentBook = B;

        //other details elided
    }
如果此ViewModel与数据服务中的book对象具有许多完全相同的属性,那么是否有充分的理由将所有需要的属性从DataService.BookResult复制到ViewModel,或者只存储DataService.BookResult对象并通过其绑定即可:

            <sdk:DataGridTemplateColumn SortMemberPath="CurrentBook.Title" Header="Title" Width="430">
                <sdk:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock VerticalAlignment="Center" Margin="5,0,0,0" Text="{Binding CurrentBook.Title}" ToolTipService.ToolTip="{Binding CurrentBook.Title}"></TextBlock>
                    </DataTemplate>
                </sdk:DataGridTemplateColumn.CellTemplate>
            </sdk:DataGridTemplateColumn>

            <sdk:DataGridTemplateColumn Header="Publisher" Width="150">
                <sdk:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Grid VerticalAlignment="Center" Margin="7,0,0,0">
                            <TextBlock x:Name="publisherText" Visibility="{Binding CurrentBook.Publisher, Converter={StaticResource hasValueConverter}}" Text="{Binding CurrentBook.Publisher}" ToolTipService.ToolTip="{Binding CurrentBook.Publisher}" />
                            <TextBlock Visibility="{Binding Visibility, ElementName=publisherText, Converter={StaticResource visibilityInverter}}" Style="{StaticResource textForNoData}">No Publisher Info</TextBlock>
                        </Grid>
                    </DataTemplate>
                </sdk:DataGridTemplateColumn.CellTemplate>
            </sdk:DataGridTemplateColumn>

没有发布者信息

我知道这违反了Demeter定律,我可能应该列出所有属性,并在工厂方法中进行属性映射细节,但由于这是一个非常小的项目,数据服务的更改非常不可能,并且此类更改的影响相对较小,是否有任何Silverlight/WPF特定的原因说明这可能是一个好主意,也可能不是一个好主意

德米特定律限制了方法的使用,而不是属性。对对象模型中属性的只读访问不会违反它

我一点也不担心这个问题,只要您只进行单向绑定,并且不需要属性更改通知。但是在视图中查找有关数据元素的描述性信息?我不认为这有什么问题