Laden...

StaticResource per Binding ansprechen

Erstellt von Ahrimaan vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.693 Views
A
Ahrimaan Themenstarter:in
350 Beiträge seit 2010
vor 12 Jahren
StaticResource per Binding ansprechen

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

U
1.688 Beiträge seit 2007
vor 12 Jahren

Oder macht man das anders ?

Z. B. so:
StyleSelector-Klasse

A
Ahrimaan Themenstarter:in
350 Beiträge seit 2010
vor 12 Jahren

Hi,

danke für die Antwort.
Eine Frage dazu :

Ich will auf ein gewisses ViewModel reagieren und dann die property aller treeViewItems setzten.
Dazu muss ich doch nur abfragen ob der typ des Items meinem ViewModel entspricht und dann die passenden Trigger setzten oder ?

Grüße

U
1.688 Beiträge seit 2007
vor 12 Jahren

Dazu muss ich doch nur abfragen ob der typ des Items meinem ViewModel entspricht und dann die passenden Trigger setzten oder ?

Oder den "ResourceKeyString" - oder was anderes "benutzerdefiniertes".

Der Selector kann den Style auch über die Resource zurückgeben, sodass weiteres Anpassen auch über XAML/Blend möglich ist.

A
Ahrimaan Themenstarter:in
350 Beiträge seit 2010
vor 12 Jahren

Super Danke !