对于基本上是字符串格式的计算属性,推荐的处理方式是什么?在视图中还是在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类型的计算属性放在视图模型中,然后只绑定一个TextBlock是不是更好?
发布于 2011-05-05 16:31:56
在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的观点,即格式化应该由视图完成。
发布于 2011-05-05 15:49:02
我同意slugster的评论“格式化任何值都应该由视图完成”。我只想补充一点,你总是可以编写一个自定义的转换器来处理格式化方面的事情。
发布于 2011-05-05 13:40:17
我通常会创建额外的属性,并将格式设置放在视图模型的getter中。它是视图的模型,它关注的是如何显示一些东西。我想这也使得显示格式是可测试的。
https://stackoverflow.com/questions/5893103
复制相似问题