我一直在努力将以下代码转换为纯C#,这段XAML代码来自Cavanagh的博客,介绍如何在任何东西上制作圆角。这段代码可以正常工作,但有时需要它具有动态性,因此需要将其转换为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(会崩溃),但如果我将其声明为常规元素VisualBrush,我无法将border作为Visual传递进去,因为它是FrameworkElementFactory。
简单地说,我迷失了方向,任何帮助都将不胜感激。 感谢您的任何帮助。
MyXamlFile.g.cs
。它包含了解析后的代码。 - Tergiver