1

プログラムで実行時に要素を追加します。

private void AddModule(string modulename, string ip, string description)
    {
        ModuleInfobox infobox = new ModuleInfobox();
        infobox.Modulename = modulename;
        infobox.IpAddress = ip;
        infobox.Description = description;
        infobox.Modulenamecolor = "Lime";
        infobox.Name = modulename;
        ModulePanel.RegisterName(infobox.Name, infobox);
        ModulePanel.Children.Add(infobox);
    }

ModuleInfoBoxは私のUserControlです。ここで、このオブジェクトへの参照が必要です。私はこれを試してみます:

private FindLogicalNodeDelegate delFindLogicalNode;
private FindNameDelegate delFindName;
delegate object FindLogicalNodeDelegate(DependencyObject wantedObject, string name);
delegate object FindNameDelegate(string name);
delFindLogicalNode = new FindLogicalNodeDelegate(LogicalTreeHelper.FindLogicalNode);
delFindName = new FindNameDelegate(ModulePanel.FindName);

スレッド内:

object wantedObject = ModulePanel.Dispatcher.BeginInvoke(delFindLogicalNode, DispatcherPriority.Normal, ModulePanel, "modulename").Result;
object wantedObject2 =  this.Dispatcher.BeginInvoke(delFindName, DispatcherPriority.Normal, "moduleName").Result;

デバッガーを使用すると、FindLogicalNodeが参照を検出することがありましたが、通常は検出されませんでした。私はこれらのトピックを読みました:WPF-FindNameはすべきでないときにnullを返し要素がコードに追加された場合は「FindName」は機能しません が、それでもコードにエラーがあるはずです

4

0 に答える 0