2011-03-28 13 views
3

是否Visual Studio 2010的可視化設計允許在設計時通過外部XML文件加載數據?設計時間數據從外部XML文件

看來,我可以通過d添加:DataContext的,但我有大量的數據,這是很容易通過XML加載它。這可能嗎?

+0

使用「d:DataContext的」之間有什麼區別和「通過XML負載」你找誰?既然d:DataContext會加載你的XML,你還有其他一些用途或功能嗎? – 2011-03-29 12:48:48

+0

我的XML是通過調用我的倉庫加載,所以我的datacontext等於庫。因此,在這種情況下將其設置爲XML將不起作用。 – kevindaub 2011-03-29 19:56:39

回答

2

一兩件事你可以做的是使存儲庫(或其他物體),你會在運行時使用的設計時版本。我經常使用的簡單方法就是這樣。

在App.xaml中:

<Application ...> 
    <Application.Resources> 
    <local:MyClass x:key="DesignData"/> 
    </Application.Resources> 
</Application> 

然後在類的構造函數,你可以發現你是在設計模式,並相應地填充數據:最後

public class MyClass 
{ 
    public MyClass() 
    { 
    bool isInDesign = DesignerProperties.GetIsInDesignMode(new DependencyObject()); 
    if (isInDesign) 
    { 
     // Load your XML + other setup routines. 
    } 

    // Normal ctor code. 
    } 
} 

,使用此項目及其數據作爲您的上下文。

<Window ...> 
    <Grid d:DataContext="{StaticResource DesignData}"> 
    ... 
    </Grid> 
</Window> 

這可能是你可以用它來獲得複雜的設計時數據最簡單的方法。當然,您可能需要使用'MyClass'的子類或其他方法來處理非常複雜的場景,但聽起來您足夠了解這一點。從個人的經驗來說,你可以用這種方式來作出,你能想到的任何程序狀態設計數據,甚至可以走那麼遠,從DB拉活的數據,如果你想要的。當然,越早開始考慮應用程序中的設計數據越容易實際工作。

+0

這正是我所做的。起初我沒有看到任何結果。謝謝。 – kevindaub 2011-03-31 00:30:27

+0

如何在設計時加載XML文件?你在哪裏放置文件,你如何告訴設計師找到它? – SelAromDotNet 2013-02-20 05:38:14

+0

設計器構造類的實例,所以您將它加載到那裏。請參閱上面的代碼block @ //加載您的XML +其他安裝例程。 ?你可以從你想要的任何舊地方加載文件;數據庫,文件系統或嵌入式資源。 – 2013-02-20 14:07:10