Wie machen loser XAML Inhalt von benutzerdefinierten Kontrollen bewusst
-
27-09-2019 - |
Frage
Ich habe eine lose XAML-Datei ...
<Style
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyNamespace"
TargetType="{x:Type local:CustomControl}">
<Setter Property="HoverOpacity" Value="1.0"/>
</Style>
..., dass ich zur Laufzeit geladen werden soll. Wenn ich mir eine Ausnahme erhalten und erklärt: „Typenbezeichnung kann öffentlichen Typen nicht gefunden namens‚Custom‘.“ Wie kann ich die lose XAML bewusst meine Namespace machen?
Ich muss Verwendung HoverOpacity
, die eine Abhängigkeitseigenschaft des CustomControl
ist. Hier ist der Code, dass ich zur Zeit bin mit dem XAML laden:
var resource = Application.GetResourceStream(new Uri("pack://application:,,,/Assets/HoverStyle.xaml"));
XamlReader.Load(resource.Stream);
BTW, ich merke, dass die XAML einfach ist und ich konnte nur die Style
in Code einfügen, aber das ist eine Hallo Welt XAML; sein Gehen, viel komplexer geworden, an denen Animationen und so.
P. S. Eine andere Lösung wäre eine Möglichkeit, entweder eine XAML-Datei in einem benutzerdefinierten Steuerelement Anbringen abgeleitet von Panel (eine, die nicht Visual Studio 2008 nicht abstürzen) oder eine Möglichkeit, leicht Anbringen Trigger, Daten Trigger, Entry-Level-Aktionen und Austrittsaktionen zu Custom Controls.
Lösung
Gosh darn es, ich es herausgefunden. Ich brauchte den Assembly-Namen mit dem Namensraum angeben; etwa so:
<Style
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyNamespace;assembly=MyAssembly"
TargetType="{x:Type local:CustomControl}">
<Setter Property="HoverOpacity" Value="1.0"/>
</Style>
Ich werde Antwort Kredit für jeden geben, der meine „P. S.“ antworten konnte Frage innerhalb der nächsten zwei Tage. Diese ganze Situation scheint ein wenig nass, so dass ich wirklich in Alternativen interessiert sein würde.
Danke:)