直接来说就是:将xaml的内容拼接成字符串再使用(DataTemplate)XamlReader.Load(string str)将结果返回。2两年处理过的内容,如今又碰到一次竟然忘记曾经处理过,又上网查了一遍。真是够呆的
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
///
<summary>
/// 通过XamlReader将string生成DataTemplate
/// </summary>
/// <returns></returns>
DataTemplate GetDataTemplate()
{
StringBuilder sb = new StringBuilder();
sb.Append( " <DataTemplate xmlns='http://schemas.microsoft.com/client/2007'> ");
sb.Append( " <StackPanel Orientation='Horizontal' HorizontalAlignment='Left'> ");
sb.Append( " <CheckBox IsChecked='{Binding Path=IsChecked, Mode=TwoWay}'></CheckBox> ");
sb.Append( " <TextBlock Text='{Binding Path=FunctionName}' FontFamily='Arial,Microsoft YaHei,NSimSun,SimHei'></TextBlock> ");
sb.Append( " </StackPanel> ");
sb.Append( " </DataTemplate> ");
return (DataTemplate)XamlReader.Load(sb.ToString());
}
/// 通过XamlReader将string生成DataTemplate
/// </summary>
/// <returns></returns>
DataTemplate GetDataTemplate()
{
StringBuilder sb = new StringBuilder();
sb.Append( " <DataTemplate xmlns='http://schemas.microsoft.com/client/2007'> ");
sb.Append( " <StackPanel Orientation='Horizontal' HorizontalAlignment='Left'> ");
sb.Append( " <CheckBox IsChecked='{Binding Path=IsChecked, Mode=TwoWay}'></CheckBox> ");
sb.Append( " <TextBlock Text='{Binding Path=FunctionName}' FontFamily='Arial,Microsoft YaHei,NSimSun,SimHei'></TextBlock> ");
sb.Append( " </StackPanel> ");
sb.Append( " </DataTemplate> ");
return (DataTemplate)XamlReader.Load(sb.ToString());
}