locked
Binding Slider к FontSize RRS feed

  • Вопрос

  • Есть Slider от 12 до 40 - Popup окно в виде окна. Т.е. создаётся не кодом а BlankPage

    Есть окно с RichTextBlock - Paragraph и т.д.

    надо связать FontSize с Value Slider

    создаю класс для связки

        public class FontSizeClass : INotifyPropertyChanged
        {        private double _valuefild;
            public double ValueFild
            {
                get { return _valuefild; }
                set { SetProperty(ref _valuefild, value); }
            }
        }

    в RichtextBlock делаю Context

                    <RichTextBlock Name="RTBName">
                        <RichTextBlock.DataContext>
                            <EsotericSIT:FontSizeClass/>
                        </RichTextBlock.DataContext>
                        <Paragraph TextIndent="80" FontSize="{Binding ValueFild, Mode=TwoWay}">

    в Slider делаю привязку туда же

     
                <Slider Name="SLDFontSize" Maximum="40" Minimum="12" StepFrequency="1" ValueChanged="Slider_ValueChanged_1" Value="{Binding ValueFild, Mode=TwoWay}">
                    <Slider.DataContext>
                        <local:FontSizeClass/>
                    </Slider.DataContext>
                </Slider>
    а чего не меняется. Вроде и Inotif... реализовано

    Спасибо

    25 февраля 2013 г. 14:57

Ответы

  • Можно сделать класс-одиночку (singleton), который будет хранить настройки приложения и который будет в единственном экземпляре. И соответсвенно через него проводит все изменения.
    • Помечено в качестве ответа developers_s 27 февраля 2013 г. 12:21
    27 февраля 2013 г. 5:08

Все ответы

  • А почему namespace разные? У вас создается 2 экземпляра класса FontSizeClass: один в Slider (его вы и меняете), другой - в RichTextBlock (он ничего не знает о том что значение поменялось).
    25 февраля 2013 г. 17:13
  • а как быть? Если RichTextBlock заполняется из одного класса, основное окно другой класс slider третий класс поля для Binding четвертый класс.

    Т.е. заполняю я текст в одном классе, а потом менять шрифт снова создавать экземпляр RichTextBlock и его уже менять. У меня будет два экземпляра текста?


    Спасибо

    26 февраля 2013 г. 1:25
  • Если все это находится в одном элементе управления, ты вы можете привязать размер шрифта к значению слайда напрямую:

    <Paragraph TextIndent="80" FontSize="{Binding ElementName=SLDFontSize, Path=Value}">

    26 февраля 2013 г. 5:07
  • нет это всё в разных поэтому и класс пришлось с полем создать


    Спасибо

    26 февраля 2013 г. 7:16
  • Тогда можно сделать размер текста как DynamicResource и изменять его в рантайме или же добиться того, чтобы класс FontSizeClass был в единственном экземпляре.
    26 февраля 2013 г. 7:19
  • А DynamicResource в Windows 8 остался?

    Спасибо

    26 февраля 2013 г. 8:15
  • Да, с DynamicResource я погорячился... Тогда либо второй вариант, либо можно через события сделать (в элементе управления со Slider генерить, в RichTextBlock перехватывать)
    26 февраля 2013 г. 8:36
  • А как обратиться к экземпляру созданному в одной Page из другой Page


    Спасибо

    27 февраля 2013 г. 3:51
  • Можно сделать класс-одиночку (singleton), который будет хранить настройки приложения и который будет в единственном экземпляре. И соответсвенно через него проводит все изменения.
    • Помечено в качестве ответа developers_s 27 февраля 2013 г. 12:21
    27 февраля 2013 г. 5:08