Frage

Ich habe eine XAML-Datei mit diesem Code:

<GridViewColumn x:Name="lvCol3"
                Header="Quantità"
                Width="120">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <Control x:Name="host">
                <Control.Template>
                    <ControlTemplate>
                        <TextBlock Text="{Binding Path=Entity.Quantita}" />
                    </ControlTemplate>
                </Control.Template>
            </Control>
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding Path=IsSelected,
                                       RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}"
                             Value="True">
                    <Setter TargetName="host" Property="Template">
                        <Setter.Value>
                            <ControlTemplate x:Name="myControlTemplate" />
                        </Setter.Value>
                    </Setter>
                </DataTrigger>
            </DataTemplate.Triggers>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

Ich würde myControlTemplate von Code hinter verwalten, um verschiedene UI-Objekt zuweisen.

Ich versuche FindResource zu verwenden, aber es funktioniert nicht. Wie kann ich das tun?

War es hilfreich?

Lösung

Wahrscheinlich ist der einfachste Weg, um Ihre Control auf eine Ressource zu extrahieren. Dann können Sie verwenden Findresource

So etwas wie folgt aus:

<UserControl>
  <UserControl.Resources>
    <ControlTemplate x:Key="MyControlTemplate">
         <TextBlock
            Text="{Binding Path=Entity.Quantita}"/>
    </ControlTemplate>
  </UserControl.Resources>

  ...

  <GridViewColumn 
     x:Name="lvCol3"
     Header="Quantità"
     Width="120">
        <GridViewColumn.CellTemplate>
            <DataTemplate>
               <Control x:Name="host" Template="{StaticResouce MyControlTemplate}">   
               </Control>
        </GridViewColumn.CellTemplate>
   </GridViewColumn>

  ...
</UserControl>

Dann im Code für Ihren Usercontrol (oder was auch immer ist das Wurzelelement) Sie tun können,

var resource = FindResource("MyControlTemplate") as ControlTemplate;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top