none
ItemContainerStyle StaticResource Binding RRS feed

  • Frage

  • Hallo,

    ich will anhand eines String im ViewModel einen Style auswählen.

     

        <UserControl.Resources>
            <Style TargetType="{x:Type TreeViewItem}" x:Key="WithCheckbox">
                <Style.Triggers>
                    <Trigger Property="HasItems" Value="True">
                        <Setter Property="Focusable" Value="False" />
                    </Trigger>
                </Style.Triggers>
            </Style>
            <Style TargetType="{x:Type TreeViewItem}" x:Key="Normal">
                <Style.Triggers>
                    <Trigger Property="HasItems" Value="True">
                        <Setter Property="Focusable" Value="False" />
    
                    </Trigger>
                    <Trigger Property="HasItems" Value="False">
                        <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </UserControl.Resources>
        <Grid>
            <TreeView ItemsSource="{Binding Items}" ItemContainerStyle="{StaticResource ResourceKey={Binding ResourceKeyString}}">
    

     


    Leider klappt das nicht, er sagt mir, dass er das Bidning nicht findet.

    Im VM ist dieses aber vorhanden :

     

    public string ResourceKeyString { get { return "Normal"; } }
    

     


    Oder macht man das anders ?

    Grüße

     


    Mittwoch, 7. September 2011 11:36

Antworten

  • Hi Pawel,

    wenn Du einen Style per Code zuweisen möchtest, würdest Du das z.B. per irgendwas.Style=(Style)DeinObjekt.FindResource(strNameDerResource); machen. Auf Deine Weise habe ich das noch nie gemacht, würde aber bezweifeln, dass es so geht. :-) Allerdings sollte - wenn überhaupt - eine Property ein Style-Objekt liefern, nicht dessen Key. Dann fehlt noch INPC und die StaticResource müsste sicherlich durch eine DynamicResource ersetzt werden. Aber, wie gesagt, kann mir nicht vorstellen, dass das funktioniert.

    Du solltest Dir eher einen StyleSelector basteln, der dann entspr. umschaltet. Schau Dir mal das Beispiel hier an, das scheint mir ganz gut zu passen.


    Cheers,
    Olaf
    http://blogs.intuidev.com
    • Als Antwort markiert Pawel Warmuth Donnerstag, 8. September 2011 16:59
    Donnerstag, 8. September 2011 05:40

Alle Antworten

  • Hi Pawel,

    wenn Du einen Style per Code zuweisen möchtest, würdest Du das z.B. per irgendwas.Style=(Style)DeinObjekt.FindResource(strNameDerResource); machen. Auf Deine Weise habe ich das noch nie gemacht, würde aber bezweifeln, dass es so geht. :-) Allerdings sollte - wenn überhaupt - eine Property ein Style-Objekt liefern, nicht dessen Key. Dann fehlt noch INPC und die StaticResource müsste sicherlich durch eine DynamicResource ersetzt werden. Aber, wie gesagt, kann mir nicht vorstellen, dass das funktioniert.

    Du solltest Dir eher einen StyleSelector basteln, der dann entspr. umschaltet. Schau Dir mal das Beispiel hier an, das scheint mir ganz gut zu passen.


    Cheers,
    Olaf
    http://blogs.intuidev.com
    • Als Antwort markiert Pawel Warmuth Donnerstag, 8. September 2011 16:59
    Donnerstag, 8. September 2011 05:40
  • Hi Olaf,

    ich habe jetzt den StyleSelector benutzt, der funzt wunderbar

    Grüße

    • Als Antwort markiert Pawel Warmuth Donnerstag, 8. September 2011 09:08
    • Tag als Antwort aufgehoben Pawel Warmuth Donnerstag, 8. September 2011 16:58
    Donnerstag, 8. September 2011 09:08
  • Hmm. Will ja nicht kleinlich sein, aber hast Du absichtlich Deine Antwort als solche markiert ..?
    Cheers,
    Olaf
    http://blogs.intuidev.com
    Donnerstag, 8. September 2011 16:48
  • Ähh verzeihung , natürlich sollte es deine Antwort sein ,welche die Lösung hat

    P.S. Nutze nie Chrome mit AdBlocker ;-)

    Donnerstag, 8. September 2011 16:59
  • Ah, merci. Chrome ist böse. ;-)
    Cheers,
    Olaf
    http://blogs.intuidev.com
    Donnerstag, 8. September 2011 17:13