J'ai été perplexe avec essayer de convertir le code suivant en C# pur. Ce code XAML provient du blog de Cavanaghs sur comment faire des coins arrondis sur n'importe quoi. Le code fonctionne mais j'ai besoin de le convertir en C# car j'en ai besoin pour être dynamique dans certains cas. Si vous pouviez aider cela serait génial.Conversion ControlTemplate XAML en C#
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType='{x:Type ListViewItem}'>
<Grid>
<Border CornerRadius="15" Name="mask" Background="White"/>
<StackPanel Background="Beige">
<StackPanel.OpacityMask>
<VisualBrush Visual="{Binding ElementName=mask}"/>
</StackPanel.OpacityMask>
<GridViewRowPresenter Content="{TemplateBinding Content}" Columns="{TemplateBinding GridView.ColumnCollection}"/>
<TextBlock Background="LightBlue" Text="{Binding News}" />
</StackPanel>
</Grid>
</ControlTemplate>
</Setter.Value>
Jusqu'à présent, je donne les résultats suivants, mais je reçois des erreurs.
FrameworkElementFactory border = new FrameworkElementFactory(typeof(Border));
border.SetValue(Border.BackgroundProperty, Brushes.White);
border.SetValue(Border.CornerRadiusProperty, new CornerRadius(8, 8, 8, 8));
border.SetValue(Border.NameProperty, "roundedMask");
Pour autant que je peux dire que je ne peux pas faire la VisualBrush comme FrameworkElementFactory (accidents), mais si je déclare comme un élément régulier VisualBrush je ne peux pas passer la frontière en tant visuelle depuis son FrameworkElementFactory un.
Simplement je me perds, toute aide serait appréciée. Merci pour toute aide
Vous savez que vous pouvez fournir un nom à l'élément en question dans XAML puis le référencer dans le code derrière pour fournir la capacité dynamique que vous désirez. Vous n'avez pas besoin de construire l'ensemble de l'élément dans le code derrière. –
Pour référence ultérieure, XAML est analysé en C# (ou VB dans un projet VB). Après la compilation, regardez dans le dossier .obj pour 'MyXamlFile.g.cs'. Il contient le code analysé. – Tergiver
@Tergiver ce n'est pas précis (au moins plus) - XAML génère .BAML (dans WPF) et Codebehind C#/VB etc. Le code est pour assigner les références nommées aux variables de classe (codebehind est une classe partielle qui complète le BAML) –