Finden Sie eine Control von Code
-
07-07-2019 - |
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?
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