MVVM计算的属性

时间:2011-05-05 05:35:05

标签: silverlight mvvm

什么是处理基本上是字符串格式的计算属性的推荐方法?在View或ViewModel中?目前我已经看到了这个:

<StackPanel Orientation="Horizontal">
    <TextBlock Style="{StaticResource FootnoteTextStyle}" Text="Free Memory (KB): " />
    <TextBlock Style="{StaticResource FootnoteTextStyle}" Text="{Binding MemoryRemain}" />
    <TextBlock Style="{StaticResource FootnoteTextStyle}" Text=" / " />
    <TextBlock Style="{StaticResource FootnoteTextStyle}" Text="{Binding MemoryTotal}" />
    <TextBlock Style="{StaticResource FootnoteTextStyle}" Text=" (" />
    <TextBlock Style="{StaticResource FootnoteTextStyle}" Text="{Binding MemoryRemainPercent}" />
    <TextBlock Style="{StaticResource FootnoteTextStyle}" Text="%)" />
</StackPanel>

最好将它作为string类型的计算属性放在viewmodel中,然后只绑定一个TextBlock吗?

3 个答案:

答案 0 :(得分:3)

在XAML中也可以使用string.format。我想你可以改写你的xaml:

<StackPanel Orientation="Horizontal">
    <TextBlock>
        <TextBlock.Text>
            <MultiBinding StringFormat="Free Memory (KB): {0} / {1} ({2}%)">
                <Binding Path="MemoryRemain" />
                <Binding Path="MemoryTotal" />
                <Binding Path="MemoryRemainPercent" />
            </MultiBinding>
        </TextBlock.Text>
    </TextBlock>
</StackPanel>

IMO,它有点干净,因为你可以看到字符串作为一个整体,就像在代码中一样。我也同意slugster和Myles J格式化应该由视图完成。

答案 1 :(得分:2)

我同意slugster的评论“格式化任何值应该由View完成”。我只想补充一点,你总是可以编写一个自定义转换器来处理事物的格式化方面。

答案 2 :(得分:0)

我通常创建其他属性并将格式放在视图模型中的getter中。它是视图的模型,关注某些东西的显示方式。我想它也使显示格式可测试。