【问题标题】:Create control from XAML in codebehind?在代码隐藏中从 XAML 创建控件?
【发布时间】:2011-12-28 08:09:37
【问题描述】:

我有 XAML 定义了一些东西,比如说:

<Path Data="M16.25,11 L0.5,0.5 L32,0.5 z" Fill="#FFF4F4F5" Height="11" Margin="1.542,0.25,18.458,0" Stretch="Fill" Stroke="Black" UseLayoutRounding="False" VerticalAlignment="Top"/>

我可以在代码隐藏中做这样的事情吗:

Path myPath = Path.FromXAML("
    <Path Data="M16.25,11 L0.5,0.5 L32,0.5 z" Fill="#FFF4F4F5" Height="11" Margin="1.542,0.25,18.458,0" Stretch="Fill" Stroke="Black" UseLayoutRounding="False" VerticalAlignment="Top"/>");

显然使用适当的转义字符以确保正确解析字符串。

我记得这是可能的,但我不记得具体细节了..

【问题讨论】:

    标签: c# silverlight xaml code-behind


    【解决方案1】:

    刚刚想通了,使用 XamlReader.Load 做得很好。

    我必须对代码进行的一个小修改是添加命名空间,所以要转换它:

    <Path Data="M16.25,11 L0.5,0.5 L32,0.5 z" Fill="#FFF4F4F5" Height="11" Margin="1.542,0.25,18.458,0" Stretch="Fill" Stroke="Black" UseLayoutRounding="False" VerticalAlignment="Top"/>
    

    通过 XamlReader.Load 运行:

    Path p = XamlReader.Load(<Path **xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"**  Data="M16.25,11 L0.5,0.5 L32,0.5 z" Fill="#FFF4F4F5" Height="11" Margin="1.542,0.25,18.458,0" Stretch="Fill" Stroke="Black" UseLayoutRounding="False" VerticalAlignment="Top"/>);
    

    (显然还要为引号添加转义字符)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多