Как установить формат ЧЧ: мм с ползунками в текстовое поле - PullRequest
1 голос
/ 27 марта 2019

быстро сказал, есть ли возможность связать два ползунка в один TextBox?

В основном:

Я хотел бы создать что-то похожее на это:

a busy cat

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

xaml:

<Calendar Margin="448,220,369,39" HorizontalContentAlignment="Center" Visibility="Visible" Name="calendarMain" SelectedDatesChanged="calendarMain_SelectedDatesChanged"/>
<TextBox HorizontalAlignment="Left" Text="{Binding Path=Value, ElementName=sliderMinutes, UpdateSourceTrigger=PropertyChanged}" Visibility="Visible" Name="txtboxCal" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Margin="321,223,0,0"/>
<Slider HorizontalAlignment="Left" IsSnapToTickEnabled="True" Name="sliderHours" AutoToolTipPlacement="TopLeft" Minimum="0" Maximum="24" Margin="321,254,0,0" VerticalAlignment="Top" Width="120" Height="28"/>
<Slider HorizontalAlignment="Left" IsSnapToTickEnabled="True" Name="sliderMinutes" AutoToolTipPlacement="TopLeft" Minimum="0" Maximum="60" Margin="321,287,0,0" VerticalAlignment="Top" Width="120"/>

РЕДАКТИРОВАТЬ

Мне удалось сделать это с помощью Multibinding, как это

<TextBlock Margin="836,423,107,25" Name="txtBlockTime">
            <TextBlock.Text>
                <MultiBinding StringFormat=" {0}:{1}">
                    <Binding ElementName="sliderHours" Path="Value"/>
                    <Binding ElementName="sliderMinutes" Path="Value"/>
                </MultiBinding>
            </TextBlock.Text>
        </TextBlock>

Спасибо за совет:)

1 Ответ

0 голосов
/ 27 марта 2019

Я предлагаю вам использовать конвертер в этом поведении.

<Window.Resources>
    <local:TimeToStringMulti x:Key="TimeToStringMulti" />
</Window.Resources>
<TextBlock Margin="836,423,107,25" Name="txtBlockTime">
            <TextBlock.Text>
                <MultiBinding Converter="{StaticResource TimeToStringMulti}" Mode="TwoWay">
                    <Binding ElementName="sliderHours" Path="Value"/>
                    <Binding ElementName="sliderMinutes" Path="Value"/>
                </MultiBinding>
            </TextBlock.Text>
        </TextBlock>

И Converter.cs

    public class TimeToStringMulti: IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return string.Format("{0}:{1}", values[0], values[1] );
        }
        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
        {
            string[] param = (value as string).Split(':');
            return new Object[]{double.Parse(param[0]), double.Parse(param[1])};
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...