我只是设计'表格生成器'。 我正在从以前生成的xaml文件加载UI(通过XamlReader) 我有例如:
<StackPanel Background="Gray">
<ComboBox Name="test" ItemsSource="{Binding}" Header="testheader" DisplayMemberPath="EventDate" />
</StackPanel>
我想要实现的是在xaml文件中保存一些额外的文本信息,XamlReader不会将其加载到UI。 所以我想为Control添加一些额外的字符串属性,如'AddtionalInfo'。
<StackPanel Background="Gray">
<ComboBox Name="test" ItemsSource="{Binding}" Header="testheader" DisplayMemberPath="EventDate" AdditionalInfo="test" />
</StackPanel>
我试过通过创建自定义控件来做到这一点,但是XamlReder不想读它。 也许有人有更好的主意?
答案 0 :(得分:2)
已经有专门为此设计的财产:
的成员
public object Tag { get; set; }
Windows.UI.Xaml.FrameworkElement摘要:获取或设置可用于的任意对象值 存储有关此对象的自定义信息。
只需使用此属性即可在任何FrameworkElement
上存储您想要的任何数据。
答案 1 :(得分:1)
您可以使用附加财产:https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/attached-properties-overview
public class SomeClass
{
public static DependencyProperty AdditionalInfoProperty = DependencyProperty.RegisterAttached("AdditionalInfo", typeof(string),typeof(SomeClass),new PropertyMetadata(null));
public static void SetAdditionalInfo(DependencyObject obj, string value)
{
obj.SetValue(AdditionalInfoProperty, value);
}
public static string GetAdditionalInfo(DependencyObject obj)
{
return (string)obj.GetValue(AdditionalInfoProperty);
}
}
财产的用法:
<StackPanel Background="Gray">
<ComboBox Name="test" ItemsSource="{Binding}" Header="testheader" DisplayMemberPath="EventDate" myNamespace:SomeClass.AdditionalInfo="test" />
</StackPanel>