.NET двойной визуализации по-разному, когда отображается в TextBox или Label (WPF) - PullRequest
1 голос
/ 11 апреля 2011

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

В моем случае я попытался использовать TextBox и метку.ToString, похоже, дает тот же результат, что и TextBox.Тем не менее, элемент управления Label показывает большую точность.

Вот пример (просто перетащите большой палец, чтобы понять, что я имею в виду):

<Window x:Class="SliderTest.SliderTestWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="SliderTestWindow" Height="300" Width="300">
<StackPanel>
    <Slider Name="slider" TickFrequency="0.1" IsSnapToTickEnabled="True" />
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="0" Grid.Column="0">Value</TextBlock>
        <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding ElementName=slider, Path=Value}" />
        <TextBlock Grid.Row="1" Grid.Column="0">Value</TextBlock>
        <Label Grid.Row="1" Grid.Column="1" Content="{Binding ElementName=slider, Path=Value}" />
    </Grid>
</StackPanel>

Почему используется другойспособ рендеринга дубликатов в каждом элементе управления?

Что можно сделать для рендеринга парных символов в метке так же, как они отображаются в TextBox?

1 Ответ

4 голосов
/ 11 апреля 2011

Вы можете предоставить строку формата для привязки.Пример с использованием средства форматирования валюты:

<TextBox Text="{Binding Path=Double, StringFormat=F3}"/>
<TextBox Text="{Binding Path=Double, StringFormat=Amount: {0:C}}"/>
<TextBox Text="{Binding Path=Double, StringFormat=Amount: \{0:C\}}"/>
<TextBox>
  <TextBox.Text>
    <Binding Path="Double" StringFormat="{}{0:C}"/>
  </TextBox.Text>
</TextBox>

Источник: http://blogs.msdn.com/b/llobo/archive/2008/05/19/wpf-3-5-sp1-feature-stringformat.aspx

Справка по формату строки: http://alexonasp.net/samples/stringformatting/

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