Создать контроль из XAML в коде позади? - PullRequest
3 голосов
/ 14 ноября 2011

У меня есть 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"/>

Могу ли я сделать что-то подобное в codebehind:

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"/>");

Очевидно, с соответствующими управляющими символами для обеспечения правильного анализа строки.

Я помню, что это было возможно, но я не могу вспомнить особенности ..

1 Ответ

2 голосов
/ 14 ноября 2011

Просто разобрался, с помощью 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"/>);

(очевидно, также необходимо добавить escape-символы для кавычек)

...