2013-11-26 60 views
1

如何以編程方式訪問d:DesignHeight和d:DesignWidth? 用C#如何以編程方式訪問d:DesignHeight和d:DesignWidth?

<UsеrControl x:Class="MySpace.MyControl" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DesignHeight="200" d:DesignWidth="360"> 
+4

你想幹什麼用的? –

+0

我可以問爲什麼你需要這樣做嗎? – steveg89

+0

我想獲得該項目的原始縱橫比。 由於新操作者的寬度和長度= NaN的(自動)後 MyControl CTRL =新MyControl() // ctrl.Width == NaN的 – Mixer

回答

2

我的解決辦法:

MyControl ctrl=new MyControl(); 
    ctrl.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); 
    //ctrl.DesiredSize.Width==design width 
    //ctrl.DesiredSize.Height==design height 
3

你不能 「訪問」 是編程。

Documentation for the mc:Ignorable attribute明確規定:

指定哪個XML命名空間在一個標記文件 遇到前綴可以由XAML處理器

這意味着該命名空間中的XML屬性和元素指示被忽略通過此屬性將被XAML編譯器忽略,因此在運行時不可訪問。

此外,沒有必要在基於XAML的技術中的程序代碼中混淆UI。你走錯了路。

請勿在WPF中的過程代碼中創建或操作UI元素。這就是XAML的用途。

如果您需要更詳細的答案,請提供有關您要在此處執行的操作的其他信息。