Frage

Ich habe einen Silverlight-Steuerelemente Baugruppe, die so genannte „MySilverlightControls“. Mehrere Ordner in gelegt, dass Montage habe ich eine Klasse, die eine Rasterspalte von einem Drittanbieter erstreckt, nennen wir es „MyImageColumn.cs“.

Ich habe auch ein Ressourcenverzeichnis genannt Generic.xaml erstellt, das im Themes Ordner der Baugruppe befindet. In dieser Ressource Wörterbuch Ich habe eine Control genannt MyImageColumnTemplate definiert:

<ControlTemplate x:Name="MyImageColumnTemplate" >
    <Grid Margin="8,8,4,4" MaxHeight="32" MaxWidth="32">
        <Grid.Resources>
            <localGrid:StatusColumnImageConverter x:Key="ImageContentConverter"/>
        </Grid.Resources>
        <Border Margin="5,5,0,0" Background="Black" Opacity="0.15" CornerRadius="5" />
        <Border Background="#FF6E6E6E" CornerRadius="4,4,4,4" Padding="4" Margin="0,0,5,5">
            <Border Background="White" CornerRadius="2,2,2,2" Padding="3">
                <Image Source="{Binding EditValue, Converter={StaticResource ImageContentConverter}}" Stretch="Uniform"/>
            </Border>
        </Border>
    </Grid>
</ControlTemplate>

Meine Frage ist: von MyImageColumn, wie kann ich programmatisch diese Steuervorlage Referenz / laden, so dass ich es auf eine Eigenschaft auf der Säule zuordnen kann? Ich würde erwarten, eine Syntax ähnlich wie diese zu verwenden:

ControlTemplate ct = (ControlTemplate)Application.Current.Resources["MyImageColumnTemplate"];

aber immer NULL zurück. Als ich die Montage bis in Reflector laden, sehe ich, dass die Generic.xaml Datei ist, ist der Name der Ressource MySilverlightControls.g.resources, und der Weg in das heißt themes/generic.xaml.

Wie genau kann ich auf die einzelnen Artikel in dieser Ressource Wörterbuch?

War es hilfreich?

Lösung

Got es gelöst.

Ich muß:

  • laden mein Ressourcenverzeichnis
  • verschmelzen sie mit den Ressourcen der Anwendung
  • laden meine Steuer Vorlage aus der Anwendungsressource

Im Rahmen der Ressourcenverzeichnis des Ladens, ich hatte auch das pack URI-Schema zu registrieren. Ich habe dann mit einigen verrückten COM-basierten Ausnahmen aufgrund geringfügiger Fehler mit meiner XAML zu tun habe. Ich habe auch Fehler gehalten zu werfen (auch wenn die XAML war einwandfrei und geladen in Ordnung sein könnte die neu erstellte Ressource Wörterbuch-Datei) musste meine XAML in eine separate Ressource Wörterbuch-Datei verschieben, es durch generic.xaml zu tun versuchen. Also, es nach unten zu vereinfachen, war dies der Code:

if (!UriParser.IsKnownScheme("pack"))
    UriParser.Register(new GenericUriParser(GenericUriParserOptions.GenericAuthority), "pack", -1);

ResourceDictionary dict = new ResourceDictionary();
Uri uri = new Uri("/MySilverlightControls;component/themes/Dictionary1.xaml", UriKind.Relative);
dict.Source = uri;
Application.Current.Resources.MergedDictionaries.Add(dict);
ControlTemplate ct = (ControlTemplate)Application.Current.Resources["MyImageColumnTemplate"];

Ich habe die Einzelheiten für diese Lösung in diesem Blog Post .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top