2015-11-21 2 views
0

Как я могу получить XAML-код окна в виде строки, изменить эту строку и загрузить эту строку в виде xaml-кода окна?Получить код XAML в WPF

К примеру, у меня есть

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:WpfApplication1" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <ComboBox Margin="0,0,9,38" Name="button1" Height="82" HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="132"></ComboBox> 
    </Grid> 
</Window> 

, и я хочу, чтобы этот XAML код в конце

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:WpfApplication1" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <ComboBox Margin="0,0,9,38" Name="button1" Height="82" HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="132"> 
     <ComboBox.ItemTemplate> 
      <DataTemplate> 
       <local:d_dddw_imp_insurance_list /> 
      </DataTemplate> 
     </ComboBox.ItemTemplate> 
     </ComboBox> 
    </Grid> 
</Window> 
+2

Довольно точно, что XAML окна недоступен, потому что он получает _compiled_. Если вы хотите изменить свой _window_, просто используйте WPF API. Не нужно возиться с XAML во время выполнения – MickyD

+0

Что значит yo при загрузке? – Default

+1

Изменение способа отображения вещей во время выполнения не производится путем изменения xaml в качестве текста. Чего вы действительно хотите достичь? –

ответ

3

Если вы используете WPF/XAML с C#, Visual Studio, как правило компиляции кода XAML до C#, чтобы быть максимально возможной. Если вы хотите иметь динамический XAML, вам нужно использовать XamlReader, чтобы читать xaml и показывать «самостоятельно».

Просто взгляните на: Loading XAML XML through runtime

Чем вы можете изменить или манипулировать XAML и отображать результат очень легко.

Смежные вопросы