Я был в тупике с попыткой конвертировать следующий код в чистый C#. Этот код XAML из блога Cavanaghs о том, как сделать закругленные углы на чем угодно. Код работает, но мне нужно преобразовать его в C#, поскольку мне нужно, чтобы он был динамическим в некоторых случаях. Если бы вы могли помочь, это было бы здорово.Преобразование ControlTemplate XAML в 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>
До сих пор у меня есть следующие, но я получаю сообщение об ошибке.
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");
Насколько я могу сказать, что я не могу сделать VisualBrush как FrameworkElementFactory (падения), но если я объявляю его как обычный элемент визуала я не могу пройти границу в качестве Визуального с момента его в FrameworkElementFactory.
Просто я теряюсь, любая помощь будет оценена. Спасибо за любую помощь
Вы знаете, что вы можете предоставить имя соответствующему элементу в XAML, затем ссылаться на него в коде, чтобы обеспечить требуемую динамическую возможность. Вам не нужно создавать весь элемент внутри кода. –
Для дальнейшего использования XAML анализируется на C# (или VB в проекте VB). После компиляции загляните в папку .obj для 'MyXamlFile.g.cs'. Он содержит проанализированный код. – Tergiver
@Tergiver это неточно (по крайней мере, не больше) - XAML генерирует .BAML (в WPF) и Codebehind C#/VB и т. Д. Код предназначен для назначения именованных ссылок на переменные класса (codebehind - это частичный класс, который дополняет BAML) –