Microsoft-ui-xaml: Proposal: Expose IsActive and ActiveChanged event on StateTriggerBase

Created on 18 Oct 2019  路  6Comments  路  Source: microsoft/microsoft-ui-xaml

Proposal: Expose bool IsActive and ActiveChanged event on StateTriggerBase.

Summary

It's currently impossible to build composite state triggers because whether a state trigger is active or not can't be monitored, limiting their usage.

Rationale

I found it very useful in the WindowsStateTriggers repo, as I could make triggers that would trigger based on or/and/xor conditions of multiple triggers. I had to however add my own interface to my triggers to expose the Active property and ActiveChanged event, meaning my composite trigger weren't compatible with other 3rd and 1st part state triggers. It created some interesting capabilities like enabling/disabling UI if too many check boxes were checked etc.

Scope

Add the following to StateTriggerBase:

        /// <summary>
        /// Gets a value indicating whether this trigger is currently active.
        /// </summary>
        /// <value><c>true</c> if this trigger is active; otherwise, <c>false</c>.</value>
        public bool IsActive { get; }
        /// <summary>
        /// Occurs when the <see cref="IsActive"/> property has changed.
        /// </summary>
        public event EventHandler IsActiveChanged;

Important Notes

Here's an example how exposing these values allows more complex state triggers, by combining multiple"
https://github.com/dotMorten/WindowsStateTriggers/blob/3a97a7a45b9c997e4f59e4afd98dc1ee7e0d8a49/src/TestApp/Samples/CompositeSample.xaml#L13-L49
windowsstatetriggers

feature proposal needs-winui-3 team-Controls

Most helpful comment

That would make it publicly settable which I'm not sure is a good idea

All 6 comments

Since StateTriggerBase is a DependencyObject, wouldn't it make sense for IsActive to just be a DependencyProperty too?

That would make it publicly settable which I'm not sure is a good idea

@dotMorten Sorry for the long delay here. This was put in the Freezer, but I'm also adding the needs-winui-3 label too. As I think you know we're working to get open source asap, and once that happens I think we'll have more ability to evaluate suggestions like this. I appreciate the time you took to file it Morten.

Sorry for the long delay here

Oh no worries. I wasn't expecting it until then.

I'll be more than happy to implement it as well and submit the PR once the source is live.

@dotMorten I know you have the PR open to add the StateTriggers to the toolkit, since they're more foundational - does it make more sense to wait and propose adding them to WinUI 3 instead?

@michael-hawker No I didn't propose adding those triggers to WinUI. What I'm proposing here is to add the infrastructure that allows creating much more advanced state triggers - the PR you referred to does not have these advanced triggers because of the lack of that infrastructure - hence this feature request.

Was this page helpful?
0 / 5 - 0 ratings