MVVM вычисляемые свойства - PullRequest
2 голосов
/ 05 мая 2011

Каков рекомендуемый способ работы с вычисляемыми свойствами, которые в основном являются строковым форматированием?Во 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>

Лучше ли поместить это в viewmodel как вычисляемое свойство типа string, а затем просто привязать к нему один TextBlock?

Ответы [ 3 ]

3 голосов
/ 05 мая 2011

Также возможно использовать string.format в XAML. Я полагаю, вы могли бы переписать свой 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, что форматирование должно выполняться представлением.

2 голосов
/ 05 мая 2011

Я согласен с комментарием slugster "форматирование любых значений должно быть сделано с помощью View". Я бы просто добавил, что вы всегда можете написать собственный конвертер, чтобы позаботиться о форматировании.

0 голосов
/ 05 мая 2011

Я обычно создаю дополнительные свойства и помещаю форматирование в геттеры в модель представления. Это модель представления и касается того, как что-то отображается. Я полагаю, что это также делает формат отображения тестируемым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...