예제 #1
0
            protected override void Scan()
            {
                var    realName   = Name;
                string?windowName = null;

                if (realName.Contains(":"))
                {
                    var nameSplit = realName.Split(new[] { ':' }, 2);
                    realName   = nameSplit[0];
                    windowName = nameSplit[1];
                }

                var priTarget = AffectedObject;

                if (windowName == null)
                {
                    if (!(priTarget is System.Windows.Window))
                    {
                        priTarget = System.Windows.Window.GetWindow(priTarget);
                    }

                    if (priTarget == null)
                    {
                        Debug.Write($"ControlHelper: No Window Found: {DataContext.GetType()}|{realName}");
                    }
                }
                else
                {
                    priTarget =
                        System.Windows.Application.Current.Windows.Cast <System.Windows.Window>().FirstOrDefault(win => win.Name == windowName);

                    if (priTarget == null)
                    {
                        Debug.WriteLine($"ControlHelper: No Window Named {windowName} Found");
                    }
                }

                if (priTarget == null)
                {
                    return;
                }

                foreach (var member in MemberInfoAttribute.GetMembers <WindowTargetAttribute>(DataContext.GetType())
                         .Where(mem => mem.Item1 == realName))
                {
                    try
                    {
                        member.Item2.SetInvokeMember(DataContext, priTarget);
                    }
                    catch (Exception e)
                    {
                        Debug.WriteLine("ControlHelper: Error On {0} Member Acess: {1}", member.Item2.Name, e);

                        throw;
                    }
                }
            }
예제 #2
0
 protected override void Scan()
 => MemberInfoAttribute.InvokeMembers <ControlTargetAttribute>(DataContext, Name, AffectedObject);