"how to create converter to work like "findancestor" for checking istypefound?" Code Answer

3

declare a type to contain converter parameters:

public sealed class myconverterparameter
{
    public type ancestortype { get; set; }
    public int ancestorlevel { get; set; }
}

re-write converter to use this type:

public sealed class myconverter : ivalueconverter
{
    public object convert(object value, type targettype, object parameter, cultureinfo culture)
    {
        var myparameter = (myconverterparameter)parameter;

        // other converter stuff here
    }

    public object convertback(object value, type targettype, object parameter, cultureinfo culture)
    {
        var myparameter = (myconverterparameter)parameter;

        // other converter stuff here
    }
}

declare additional resource in xaml, e.g.:

        <datatemplate>
            <datatemplate.resources>
                <local:myconverter x:key="myconverterkey"/>
                <local:myconverterparameter x:key="myconverterparameterkey" ancestortype="{x:type type-to-find}" ancestorlevel="1"/>
            </datatemplate.resources>

            <!-- datatemplate tree -->

            <datatemplate.triggers>
                <datatrigger binding="{binding path-to-bind-to, converter={staticresource myconverterkey}, converterparameter={staticresource myconverterparameterkey}}" value="value-to-fire-trigger">
                    <!-- setters -->
                </datatrigger>
            </datatemplate.triggers>
        </datatemplate>

p.s. why findancestor mode for realtivesource doesn't suits you?

By prasopes on September 25 2022

Answers related to “how to create converter to work like "findancestor" for checking istypefound?”

Only authorized users can answer the Search term. Please sign in first, or register a free account.