首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVVM计算属性

MVVM计算属性
EN

Stack Overflow用户
提问于 2011-05-05 13:35:05
回答 3查看 213关注 0票数 2

对于基本上是字符串格式的计算属性,推荐的处理方式是什么?在视图中还是在ViewModel中?目前,我在视图中看到了这个:

代码语言:javascript
复制
<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类型的计算属性放在视图模型中,然后只绑定一个TextBlock是不是更好?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-05 16:31:56

在XAML中使用string.format也是可能的。我想您可以将您的xaml重写为:

代码语言:javascript
复制
<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的观点,即格式化应该由视图完成。

票数 3
EN

Stack Overflow用户

发布于 2011-05-05 15:49:02

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

票数 2
EN

Stack Overflow用户

发布于 2011-05-05 13:40:17

我通常会创建额外的属性,并将格式设置放在视图模型的getter中。它是视图的模型,它关注的是如何显示一些东西。我想这也使得显示格式是可测试的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5893103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档