日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

在WPF中,如何得到任何Object对象的XAML代码?

發(fā)布時(shí)間:2025/3/21 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在WPF中,如何得到任何Object对象的XAML代码? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
原文:在WPF中,如何得到任何Object對(duì)象的XAML代碼?

在WPF中,可以使用System.Windows.Markup.XamlWriter.Save(objName)得到任何Object對(duì)象的XAML代碼。

這里舉個(gè)例子,然后來(lái)比較一下:
XAML代碼:
// Window1.xaml
<Window x:Class="XamlWriter.Window1"
??? xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
??? xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
??? Title="XamlWriter" Height="421" Width="485"
??? >
??? <Grid Name="Grid1">
??? <Button Height="23" Margin="9,13,0,0" Name="buttonA" VerticalAlignment="Top" Click="WriteXaml_A" HorizontalAlignment="Left" Width="92">WriteMyXaml_1</Button>
??? <Button Height="23" Margin="119,14,0,0" Name="buttonB" VerticalAlignment="Top"? Click="WriteXaml_B" HorizontalAlignment="Left" Width="96">WriteMyXaml_2</Button>
??? <Button Height="24" Margin="228,15,141,0" VerticalAlignment="Top"? Name="buttonC" Click="WriteGridXaml">WriteGridXaml</Button>
??? <Button Height="23" HorizontalAlignment="Right" Margin="0,15,11,0" VerticalAlignment="Top" Width="115" Click="WriteCSharpCode">WriteCodeButton</Button>
??? <TextBox Margin="9,50,10,1" Name="textBox1" TextWrapping="Wrap"></TextBox>
? </Grid>
</Window>

C#代碼:
// Window1.xaml.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace XamlWriter
{
??? /// <summary>
??? /// Interaction logic for Window1.xaml
??? /// </summary>

??? public partial class Window1 : System.Windows.Window
??? {

??????? public Window1()
??????? {
??????????? InitializeComponent();
??????? }

??????? private void WriteXaml_A(object sender, RoutedEventArgs e)
??????? {
??????????? string savedButton = System.Windows.Markup.XamlWriter.Save(this.buttonA);
??????????? textBox1.Text = savedButton;
??????? }

??????? private void WriteXaml_B(object sender, RoutedEventArgs e)
??????? {
??????????? string savedButton = System.Windows.Markup.XamlWriter.Save(this.buttonB);
??????????? textBox1.Text = savedButton;
??????? }

??????? private void WriteGridXaml(object sender, RoutedEventArgs e)
??????? {
??????????? string savedButton = System.Windows.Markup.XamlWriter.Save(this.Grid1);
??????????? textBox1.Text = savedButton;
??????? }

??????? private void WriteCSharpCode(object sender, RoutedEventArgs e)
??????? {
??????????? Button origianlButton = new Button();
??????????? origianlButton.Height = 50;
??????????? origianlButton.Width = 100;
??????????? origianlButton.Background = Brushes.AliceBlue;
??????????? origianlButton.Content = "Click Me";

??????????? string savedButton = System.Windows.Markup.XamlWriter.Save(origianlButton);
??????????? textBox1.Text = savedButton;
??????? }

??? }
}

運(yùn)行程序,當(dāng)點(diǎn)擊WriteGridXaml按鈕后,我們可以看到如下結(jié)果:

為了更清晰,我將上面結(jié)果都COPY成文字,為了方便閱讀,我做了適當(dāng)整理(加了換行):
<Grid Name="Grid1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<Button Height="23" Margin="9,13,0,0" Width="92" HorizontalAlignment="Left" Name="buttonA" VerticalAlignment="Top">WriteMyXaml_1</Button>
<Button Height="23" Margin="119,14,0,0" Width="96" HorizontalAlignment="Left" Name="buttonB" VerticalAlignment="Top">WriteMyXaml_2</Button>
<Button Height="24" Margin="228,15,141,0" Name="buttonC" VerticalAlignment="Top">WriteGridXaml</Button>
<Button Height="23" Margin="0,15,11,0" Width="115" HorizontalAlignment="Right" VerticalAlignment="Top">WriteCodeButton</Button>
<TextBox TextWrapping="Wrap" Margin="9,50,10,1" Name="textBox1" AcceptsReturn="True">&lt;Button Height="23" Margin="119,14,0,0" Width="96" HorizontalAlignment="Left" Name="buttonB" VerticalAlignment="Top" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&gt;WriteMyXaml_2&lt;/Button&gt;</TextBox>
</Grid>

我們來(lái)對(duì)比一下最原始的XAML代碼與我們得到的XAML代碼,為了簡(jiǎn)潔,只選第一個(gè)名為“buttonA”的按鈕。

原始的XAML代碼(從window1.xaml中節(jié)選):
<Button Height="23" Margin="9,13,0,0" Name="buttonA" VerticalAlignment="Top" Click="WriteXaml_A" HorizontalAlignment="Left" Width="92">WriteMyXaml_1</Button>

使用XamlWriter.Save()得到的XAML代碼:
<Button Height="23" Margin="9,13,0,0" Width="92" HorizontalAlignment="Left" Name="buttonA" VerticalAlignment="Top">WriteMyXaml_1</Button>

請(qǐng)注意比較,有何不同?是不是Button的屬性排列次序有變?而且,Click="WriteXaml_A" 這樣的代碼沒(méi)有了?

其他的我也不多說(shuō)了,想想看為什么?

運(yùn)行WriteCSharpCode(object sender, RoutedEventArgs e)后會(huì)得到些什么呢?以下是結(jié)果:
<Button Height="50" Width="100" Background="#FFF0F8FF" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">Click Me</Button>

而其C#是:
Button origianlButton = new Button();
origianlButton.Height = 50;
origianlButton.Width = 100;
origianlButton.Background = Brushes.AliceBlue;
origianlButton.Content = "Click Me";

這就是C# 代碼與XAML代碼的相互轉(zhuǎn)換了。提示:留意Background屬性那句,將Brushes.AliceBlue轉(zhuǎn)換成了“#FFF0F8FF”。

再想想看,這樣的功能對(duì)我們有什么用途?多想多練,舉一返三多得正果。

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的在WPF中,如何得到任何Object对象的XAML代码?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。