ResourceDictionary Enum oder Array

  • WPF

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von dotdev.

    ResourceDictionary Enum oder Array

    Hallo,
    ich habe ein ResourceDictionary erstellt, in diesem habe ich einen Style für einen Button.
    Wie kann ich in diesem, eine Liste erstellen (String, String).

    Ich möchte hier eine Liste von verfügbaren Bilder pflegen, so das der Benutzer, dann nicht mehr den Pfad angibt sonder nur
    den Key für das Bild.

    Ich hoffe ich konnte das gut erklären.
    Hi
    meinst du ein z.B. sequentielles Enum:

    Visual Basic-Quellcode

    1. Public Enum SomeEnum
    2. [Default] = 0
    3. D1
    4. D2
    5. D3
    6. End Enum

    und das enum gibt dir dann einen Index für ein Array für das Bild an, das gewählt wird?
    Oder ein System.Collections.Generic.Dictionary(Of String, System.Drawing.Image)?

    Edit: Sorry, wieder mal übersehen, dass es um WPF geht...

    Gruß
    ~blaze~
    Am besten zeige ich mal meinen Code:

    XML-Quellcode

    1. ​<Style x:Key="CustomButton" TargetType="{x:Type Button}">
    2. <Setter Property="MaxWidth" Value="80" />
    3. <Setter Property="Template">
    4. <Setter.Value>
    5. <ControlTemplate TargetType="{x:Type Button}">
    6. <!-- ..... -->
    7. <Image Source="../Images/application_help.png" Grid.Row="0" Width="32" Height="32" Margin="0,0,0,0" HorizontalAlignment="Center" VerticalAlignment="Center" />
    8. <!-- ..... -->
    9. </ControlTemplate.Triggers>
    10. </ControlTemplate>
    11. </Setter.Value>
    12. </Setter>
    13. </Style>


    Ich möchte eine Auflistung von Pfaden haben um verschiedene Bilder/Icons zur Auswahl zu stellen, von außen, wenn ich den Button hinzufüge, das ich dann sagen kann welches Bild/Icon gesetzt werden soll.
    da ist doch auch eine Solution bei.
    Und sogar ein Filmle zum angugge.

    und da siehst du, dass die Bildle über Databinding in die Buttons gelangen - Databinding ans Viewmodel.
    Wenn du also von aussen (was immer das heißen mag), Button-Bildle auswechseln willst, so musst du die Bildle des Viewmodels auswechseln.
    Hallo nochmal,

    sorry, ich verstehe das momentan echt nicht. Habe mir dein Video auch angeschaut, aber irgendwie verstehe ich es noch nicht.
    Ich versuche meine Frage nochmals zu erklären.

    Ich habe ein ResourceDictionary, dieser schaut wie oben beschrieben aus.
    Wenn ich jetzt meinen Button diesen Style zuweise, <Button Style="{StaticResource CustomButton}" />, passt auch alles.
    Ich möchte das so haben, das ich im ResourceDictionary, den Image Source setzen (Property), so das ich verschiedene Icons benutzen kann.
    Das weis ich nicht wie ich das löse. Ich habe beispiele gefunden, wie es manche mit <Button Style="{StaticResource CustomButton}" Tag="path_to_icon" /> gelöst haben,
    nur das funktionierte irgendwie bei mir nicht. Ich möchte nicht für jeden Button das ein anderes Icon hat, ein ResourceDictionary erstellen.

    Ich bin gerade dabei das zu lernen, nimmt mir das bitte nicht übel, wenn ich mich nicht richtig ausdrücken kann, ich gebe mir mühe :/

    Grüße
    Das kann man über nen Konverter lösen:

    XML-Quellcode

    1. ​<Application x:Class="Application"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:my="clr-namespace:WpfApplication3"
    5. StartupUri="MainWindow.xaml">
    6. <Application.Resources>
    7. <ResourceDictionary>
    8. <Style TargetType="Button" x:Key="test">
    9. <Style.Resources>
    10. <my:UriToImageConverter x:Key="UriToImage"/>
    11. </Style.Resources>
    12. <Setter Property="Template">
    13. <Setter.Value>
    14. <ControlTemplate TargetType="Button">
    15. <Image Source="{TemplateBinding Tag,Converter={StaticResource UriToImage}}"/>
    16. </ControlTemplate>
    17. </Setter.Value>
    18. </Setter>
    19. </Style>
    20. </ResourceDictionary>
    21. </Application.Resources>
    22. </Application>



    VB.NET-Quellcode

    1. ​Public Class UriToImageConverter
    2. Implements IValueConverter
    3. Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.Convert
    4. Dim s = String.Empty
    5. Select Case Integer.Parse(value.ToString())
    6. Case 0
    7. s = "img1.png"
    8. Case 1
    9. s = "img2.png"
    10. Case Else
    11. Dim up As New ArgumentException()
    12. Throw up
    13. End Select
    14. Return New BitmapImage(New Uri(s, UriKind.Relative))
    15. End Function
    16. Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
    17. Return Binding.DoNothing
    18. End Function
    19. End Class


    XML-Quellcode

    1. ​<Button Tag="1" Style="{StaticResource test}"/>
    Mfg
    Vincent