powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как правильно сохранить значение DependencyObject в переменную?
10 сообщений из 10, страница 1 из 1
Как правильно сохранить значение DependencyObject в переменную?
    #38185630
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть не совсем корректно выражаюсь, задача такая: пишу UserControl, у которого определяю два DependencyProperty,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
private ImageSource _alterImageSource;
private ImageSource _mainImageSource;

public static DependencyProperty AlterImageSourceProperty= 
        DependencyProperty.Register(
        "AlterImageSource", typeof(ImageSource), typeof(ToolTipStateImgButton), new PropertyMetadata(AlterImageSourceChanged));
			
		private static void AlterImageSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {

            ((ToolTipStateImgButton)d)._alterImageSource = (ImageSource)e.NewValue;
			
        }
public static DependencyProperty MainImageSourceProperty= 
        DependencyProperty.Register(
        "MainImageSource", typeof(ImageSource), typeof(ToolTipStateImgButton), new PropertyMetadata(MainImageSourceChanged));
			
		private static void MainImageSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {

            ((ToolTipStateImgButton)d)._mainImageSource = (ImageSource)e.NewValue;
			
        }



В обработчике клика хочу сделать, чтобы изображение на контроле циклически менялось.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
public override void _Button_Click(object sender, System.Windows.RoutedEventArgs e)
		{
						
			if (_stateTypesStack.Find(_state).Next == null )
			{
				_state =  _stateTypesStack.First.Value;
			
			}
			else
			{
			   _state = _stateTypesStack.Find(_state).Next.Value;
			}
			
			if (_state == DefaultState)
			{

			MainImageSource = _mainImageSource;
				
			}
			else
			{
			MainImageSource = _alterImageSource);
			}
						
		}  



Ерунда в том, что MainImageSource = _mainImageSource; изменяет _mainImageSource, и никакого цикла не получается.
Как тут быть?
...
Рейтинг: 0 / 0
Как правильно сохранить значение DependencyObject в переменную?
    #38185711
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FishHook,

да слушай, тебя штырит в пятницу то.
за счет чего должен быть цикл , на какие строки кода, ты рассчитываешь , укажи?
если смотреть на твой код, то все работает так как ты и написал.
...
Рейтинг: 0 / 0
Как правильно сохранить значение DependencyObject в переменную?
    #38185747
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiKFishHook,

да слушай, тебя штырит в пятницу то.
за счет чего должен быть цикл , на какие строки кода, ты рассчитываешь , укажи?
если смотреть на твой код, то все работает так как ты и написал.
Да нет. Смотри. Есть контрол, определяется он вот так
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<MKKControls:ToolTipStateImgButton Name="Block" 
			PopupText="Заблокировать"
                        AlterPopupText="Разблокировать"
			DefaultState="unblocked"
			ButtonImageSource="icons/lock.png"
			AlterImageSource="icons/desctop.png"
			StateTypes="blocked,unblocked"
			/>



На StateTypes повешен колбэк,
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public static readonly DependencyProperty StateTypesProperty= 
        DependencyProperty.Register(
        "StateTypes", typeof(List<string>), typeof(ToolTipStateImgButton), new PropertyMetadata(StateTypesChange));
				

private static void StateTypesChange(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            
            ((ToolTipStateImgButton)d)._stateTypesStack = new LinkedList<string>((List<string>)e.NewValue);
			
        }	


Жмякаю на кнопочку, текущее значение _state меняется по кругу

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
if (_stateTypesStack.Find(_state).Next == null )
			{
				_state =  _stateTypesStack.First.Value;
			
			}
			else
			{
			   _state = _stateTypesStack.Find(_state).Next.Value;
			}


Далее в зависимости от _state нужно отображать на контроле картинку.
...
Рейтинг: 0 / 0
Как правильно сохранить значение DependencyObject в переменную?
    #38185772
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FishHook,

ты уверен, что сейчас полностью ответил на мой вопрос?
у меня такое ощущение, что ты хочешь по моим размышлениям о движении сферического коня в вакууме, сам догадаться о решение своей проблемы и ярко об этом заявить тут, с чем и связана такая скудность деталей по проблеме.
...
Рейтинг: 0 / 0
Как правильно сохранить значение DependencyObject в переменную?
    #38185813
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiKFishHook,

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

AlexeiKза счет чего должен быть цикл

Я тебе объяснил. За счет вызова Next у кольцевого двусвязного списка при каждом нажатии контрола.

Что тебе еще не понятно?

Ты мне скажи, как сделать так, чтобы:

Код: c#
1.
((ToolTipStateImgButton)d)._mainImageSource = (ImageSource)e.NewValue;



при вот этом присваивании
Код: c#
1.
MainImageSource = _mainImageSource;


значение _mainImageSource не изменялось.

Все о чем прошу!
...
Рейтинг: 0 / 0
Как правильно сохранить значение DependencyObject в переменную?
    #38185823
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FishHook,

А где текст свойства MainImageSource?
...
Рейтинг: 0 / 0
Как правильно сохранить значение DependencyObject в переменную?
    #38185841
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchFishHook,

А где текст свойства MainImageSource?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public static DependencyProperty MainImageSourceProperty =
            DependencyProperty.Register("MainImageSource",
                                        typeof (ImageSource),
                                        typeof (ToolTipImgButton),
                                        new PropertyMetadata(MainImageSourceChanged));
		
		private static void MainImageSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {

            ((ToolTipStateImgButton)d)._mainImageSource = ((ImageSource)e.NewValue).GetValue();
			
        }
		
		public ImageSource MainImageSource
		{
			get { return (ImageSource)GetValue(MainImageSourceProperty); }
			set { 
				SetValue(MainImageSourceProperty, value); 
			
			}
		} 
...
Рейтинг: 0 / 0
Как правильно сохранить значение DependencyObject в переменную?
    #38185849
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FishHook,

я не знаю, что мне делать, плакать или смеяться)

Вы при присваивании свойства
Код: c#
1.
MainImageSource = _mainImageSource;


меняете значение свойства зависимости
Код: c#
1.
2.
3.
4.
set { 
				SetValue(MainImageSourceProperty, value); 
			
			}


которое в свою очередь меняет _mainImageSource
Код: c#
1.
((ToolTipStateImgButton)d)._mainImageSource = (ImageSource)e.NewValue;



FishHookКак тут быть?
Включить голову наверное
...
Рейтинг: 0 / 0
Как правильно сохранить значение DependencyObject в переменную?
    #38185850
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public static DependencyProperty MainImageSourceProperty =
            DependencyProperty.Register("MainImageSource",
                                        typeof (ImageSource),
                                        typeof (ToolTipImgButton),
                                        new PropertyMetadata(MainImageSourceChanged));
		
		private static void MainImageSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {

            ((ToolTipStateImgButton)d)._mainImageSource = (ImageSource)e.NewValue
			
        }
		
		public ImageSource MainImageSource
		{
			get { return (ImageSource)GetValue(MainImageSourceProperty); }
			set { 
				SetValue(MainImageSourceProperty, value); 
			
			}
		} 


Фиксед, пытаюсь победить, выложил последнюю редакцию
...
Рейтинг: 0 / 0
Как правильно сохранить значение DependencyObject в переменную?
    #38185862
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch,

О как, и правда. Лажа.
Спасибо, друг
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как правильно сохранить значение DependencyObject в переменную?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]