[WPF] Альтернатива для EventTrigger
От: Dron247  
Дата: 09.02.11 08:44
Оценка:
Добрый день, а есть-ли альтернатива для EventTrigger, но такая, чтобы внутри можно было сеттеры писать, а не сториборд? Просто есть такое дело,что при попадании фокуса на различные списки в окне, у специально выделенного списка должны меняться привязки и DataTemplate, просто я не знаю как еще узнать кто сейчас в фокусе без отлова события GotFocus

Хотя-б как гуглить это подскажите


Твой IP на моем юзербаре
Re: [WPF] Альтернатива для EventTrigger
От: MxMsk Португалия  
Дата: 09.02.11 08:56
Оценка:
Здравствуйте, Dron247, Вы писали:

D>Добрый день, а есть-ли альтернатива для EventTrigger, но такая, чтобы внутри можно было сеттеры писать, а не сториборд? Просто есть такое дело,что при попадании фокуса на различные списки в окне, у специально выделенного списка должны меняться привязки и DataTemplate, просто я не знаю как еще узнать кто сейчас в фокусе без отлова события GotFocus

Используй обычный триггер, реагирующий на изменение свойства IsKeyboardFocused
Re[2]: [WPF] Альтернатива для EventTrigger
От: Аноним  
Дата: 09.02.11 19:26
Оценка:
MM>Используй обычный триггер, реагирующий на изменение свойства IsKeyboardFocused

А как обычный триггер можно использовать в DataTemplate, он вроде бы требует наличие имени, которое в Template объявить нельзя.
Re[3]: [WPF] Альтернатива для EventTrigger
От: MxMsk Португалия  
Дата: 09.02.11 20:26
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А как обычный триггер можно использовать в DataTemplate, он вроде бы требует наличие имени, которое в Template объявить нельзя.

О каком имени речь?
Re: [WPF] Альтернатива для EventTrigger
От: Sergey_BG Россия  
Дата: 10.02.11 15:23
Оценка:
Здравствуйте, Dron247, Вы писали:

D>Добрый день, а есть-ли альтернатива для EventTrigger, но такая, чтобы внутри можно было сеттеры писать, а не сториборд? Просто есть такое дело,что при попадании фокуса на различные списки в окне, у специально выделенного списка должны меняться привязки и DataTemplate, просто я не знаю как еще узнать кто сейчас в фокусе без отлова события GotFocus

D>Хотя-б как гуглить это подскажите

Не знаю в тему или нет, но можно делать Storyboard с нулевой длительностью. А ObjectAnimationUsingKeyFrames позволит задать значение любого типа. Это и будет почти что-то типа сеттера, только больше писанины.
Сергей
Re: [WPF] Альтернатива для EventTrigger
От: Dron247  
Дата: 11.02.11 03:01
Оценка:
Нашел решение, правда из области хаков
http://wex.codeplex.com/
Очень понравилось, то что нужно, плохо, что тянет кучу либ, но их можно ILMerge'ем с исполняемой сборкой слепить. Правда программа вместо нынешних 700 кб(вместе со внедренной кучей картинок) стала весить полтора метра, а к релизу будет и все два. Но учитывая мой опыт столкновения с монстрами и по 20 метров — это ничто.


Твой IP на моем юзербаре
Re[2]: [WPF] Альтернатива для EventTrigger
От: MxMsk Португалия  
Дата: 11.02.11 06:41
Оценка:
Здравствуйте, Dron247, Вы писали:

D>Нашел решение, правда из области хаков

D>http://wex.codeplex.com/
D>Очень понравилось, то что нужно, плохо, что тянет кучу либ, но их можно ILMerge'ем с исполняемой сборкой слепить. Правда программа вместо нынешних 700 кб(вместе со внедренной кучей картинок) стала весить полтора метра, а к релизу будет и все два. Но учитывая мой опыт столкновения с монстрами и по 20 метров — это ничто.
Что ты чудишь? Я тебе уже привел простой пример, как узнать, что элемент получил фокус. А ты полез в какие-то дебри ради решения элементарной задачи.
Re[4]: [WPF] Альтернатива для EventTrigger
От: Аноним  
Дата: 11.02.11 17:44
Оценка:
Здравствуйте, MxMsk, Вы писали:

MM>Здравствуйте, Аноним, Вы писали:


А>>А как обычный триггер можно использовать в DataTemplate, он вроде бы требует наличие имени, которое в Template объявить нельзя.

MM>О каком имени речь?

<DataTemplate>
<Triggers>
<TextBox Name="хрен тебе имя в datatemplate не буду компилиться" />
<Trigger>
<Setter TargetName="хочу имя"></Setter>
</Trigger>
</Trigger>
</DataTemplate>
Re[5]: [WPF] Альтернатива для EventTrigger
От: MxMsk Португалия  
Дата: 11.02.11 19:22
Оценка:
Здравствуйте, Аноним, Вы писали:

А><DataTemplate>

А> <Triggers>
А> <TextBox Name="хрен тебе имя в datatemplate не буду компилиться" />
А> <Trigger>
А> <Setter TargetName="хочу имя"></Setter>
А> </Trigger>
А> </Trigger>
А></DataTemplate>
Оригинальный XAML. Почему дочерним тегом в DataTemplate выступает Triggers? Если предположить, что он попал туда по ошибке, подход с Name и TargetName внутри шаблона работает.
Re[6]: [WPF] Альтернатива для EventTrigger
От: Аноним  
Дата: 11.02.11 21:22
Оценка:
Здравствуйте, MxMsk, Вы писали:

MM>Здравствуйте, Аноним, Вы писали:


А>><DataTemplate>

А>> <Triggers>
А>> <TextBox Name="хрен тебе имя в datatemplate не буду компилиться" />
А>> <Trigger>
А>> <Setter TargetName="хочу имя"></Setter>
А>> </Trigger>
А>> </Trigger>
А>></DataTemplate>
MM>Оригинальный XAML. Почему дочерним тегом в DataTemplate выступает Triggers? Если предположить, что он попал туда по ошибке, подход с Name и TargetName внутри шаблона работает.

А можно пример для ItemsList очень интересно как триггер будет понимать к какому name ему привязываться
Re[3]: [WPF] Альтернатива для EventTrigger
От: Dron247  
Дата: 14.02.11 07:52
Оценка:
Здравствуйте, MxMsk, Вы писали:

MM>Здравствуйте, Dron247, Вы писали:


D>>Нашел решение, правда из области хаков

D>>http://wex.codeplex.com/
D>>Очень понравилось, то что нужно, плохо, что тянет кучу либ, но их можно ILMerge'ем с исполняемой сборкой слепить. Правда программа вместо нынешних 700 кб(вместе со внедренной кучей картинок) стала весить полтора метра, а к релизу будет и все два. Но учитывая мой опыт столкновения с монстрами и по 20 метров — это ничто.
MM>Что ты чудишь? Я тебе уже привел простой пример, как узнать, что элемент получил фокус. А ты полез в какие-то дебри ради решения элементарной задачи.

Объясни как использовать IsKeyboardFocused на примере, (только проверь код) так, чтобы было лучше чем:

            <i:Interaction.Triggers>
                <wex:EventTrigger ElementName="myTree" EventName="GotFocus">                    
                    <wex:PropertyAction 
                        TargetName="contentList" 
                        TargetType="Element" 
                        Action="Set" 
                        Property="ItemsSource" 
                        Value="{Binding ElementName=myTree, Path=SelectedItem.Items, UpdateSourceTrigger=PropertyChanged}"
                        />
                </wex:EventTrigger>
                ...
                ...
            </i:Interaction.Triggers>

и я признаю себя дураком.


Твой IP на моем юзербаре
Re[4]: [WPF] Альтернатива для EventTrigger
От: MxMsk Португалия  
Дата: 14.02.11 08:17
Оценка:
Здравствуйте, Dron247, Вы писали:

D>Объясни как использовать IsKeyboardFocused на примере, (только проверь код) так, чтобы было лучше чем:

Маловато информации для стопроцентной проверки. В шаблоне кнопки и textbox-ов я использую следующий триггер:
<Trigger Property="IsKeyboardFocused"   
         Value="True">
    <Setter Property="..."
            Value="..."/>
</Trigger>


Вот только мне кажется, вопрос сформулирован не совсем правильно, отчего у меня возникло неправильное понимание. Альтернатива EventTrigger с сеттерами — это остальные триггеры. Тебе же, судя по приведенному XAML, нужно задействовать триггер, но не в шаблоне или стиле, я напрямую в элементе. Так? Тогда использование Interaction — один из лучших вариантов.

D> и я признаю себя дураком.

Мне этого не требуется.
Re[5]: [WPF] Альтернатива для EventTrigger
От: Dron247  
Дата: 15.02.11 03:05
Оценка:
Здравствуйте, MxMsk, Вы писали:

MM>Вот только мне кажется, вопрос сформулирован не совсем правильно, отчего у меня возникло неправильное понимание. Альтернатива EventTrigger с сеттерами — это остальные триггеры. Тебе же, судя по приведенному XAML, нужно задействовать триггер, но не в шаблоне или стиле, я напрямую в элементе. Так?


Да, вы правы, мне это нужно для динамической смены привязок. Не хотелось городить костыли, так как у меня все данные так или иначе представляют собой списки. И мне на ходу нужно переключать Binding, DataTemplate и ItemsPanel у единственного списка, в который выводится вся информация. Тип информации зависит от того, что пользователь выберет пользователь. Однако, спасибо, за подсказку с IsKeyboardFocused, может пригодиться для решения проблемы с получением элементов подэлементов дерева.


Твой IP на моем юзербаре
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.