簡體   English   中英

松散的XAML是依賴於引用的命名空間加載的.NET / CLR的版本?

[英]Loose XAML is version of .NET/CLR loaded dependent on referenced namespace?

我剛剛閱讀了WPF Unleashed,它提到按鈕看起來會有所不同,具體取決於所使用的XMLNS。

所以我嘗試了下面的內容並且它正確地敲響了。

在此代碼中加載了光澤按鈕。

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <StackPanel Height="40">
        <Button Content="Button1"/>
    </StackPanel>
</Page>

在此代碼中,加載了非光澤按鈕。

<Page xmlns="http://schemas.microsoft.com/netfx/2009/xaml/presentation">
    <StackPanel Height="40">
        <Button Content="Button1"/>
    </StackPanel>
</Page>

我只想弄清楚究竟發生了什么? 它只是硬編碼,當PresentationHost.exe看到../ netfx / 2009 / ...命名空間時加載4.0 CLR

PresentationFramework.dll內部,有一個使用XmlnsDefinitionAttribute

當編譯器命中命名空間時,它會查找與目標XAML命名空間匹配的指定dll:

[System.Windows.Markup.XmlnsDefinitionAttribute("http://schemas.microsoft.com/xps/2005/06", "System.Windows.Media.Animation"),
System.Runtime.CompilerServices.CompilationRelaxationsAttribute(8)

如果它達到winfx/2006 ,它將尋找XAML 2006相應的dll。 如果它達到netfx/2009 ,它將尋找XAML 2009 dll。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM