我有一个使用 Roslyn 解析 C# 代码的 C++ 程序。我需要将我的样式和自定义控件转换为“代码隐藏”。例如我有一个简单的自定义控件包含一个按钮。XAML 样式:<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:CUSTOM_LIBRARY_PARSE"> <Style TargetType="{x:Type local:CustomControl1}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type local:CustomControl1}"> <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> <Button Background="#FF487DF0" > <Label VerticalContentAlignment="Center" HorizontalContentAlignment="Center" OpacityMask="#FFC3C3C3" Content="{Binding text_of_button_Value, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:CustomControl1}}}" /> </Button> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style></ResourceDictionary>代码隐藏控制:using System;using System.Windows;using System.Windows.Controls;namespace CUSTOM_LIBRARY_PARSE{ public class CustomControl1 : Control { public static readonly DependencyProperty text_of_button= DependencyProperty.Register("text_of_button_Value",typeof(string),typeof(CustomControl1),new PropertyMetadata(Environment.UserName)); public string text_of_button_Value { get { return (string)GetValue(text_of_button); } set { SetValue(text_of_button, value); } } static CustomControl1() { DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomControl1), new FrameworkPropertyMetadata(typeof(CustomControl1))); } }}然后用XamlParser解析它并将其加载到customcontrol1那可能吗 ?谢谢
1 回答
慕无忌1623718
TA贡献1744条经验 获得超4个赞
答案是 :
创建自定义控件的公共版本:
public CustomControl1() { }
创建自定义控件的公共版本:
public CustomControl1(){ ResourceDictionary Parse_Resource = XamlReader.Parse(code_xaml) as ResourceDictionary; this.Resources = Parse_Resource; }
解决了:D
- 1 回答
- 0 关注
- 146 浏览
添加回答
举报
0/150
提交
取消