2013-04-23 14 views
0

如何在resources.xaml中創建列表(我將用它作爲我的列表框的itemsource),以及如何在ViewModel中訪問它?由於Resource.XAML中的列表和在ViewModel中的訪問

+1

視圖中的視圖模型得到的東西聽起來不很乾淨的給我。 – 2013-04-23 08:33:51

+0

@JohanLarsson Yups我知道這是不恰當的,但根據我的老闆,我應該分開UI相關的東西,這就是爲什麼我會創建一個資源列表而不是ViewModel。我實際上很難實現這一點。我的真正目標是在列表中創建三個靜態項目(名稱,年齡,性別),然後當我點擊該項目時,我應該導航到其各自的頁面。你能幫我解決嗎?謝謝! – JennyJane 2013-04-23 09:04:26

+0

也許將列表添加到app.config中,並在ViewModel中創建解析來自app.config的數據的屬性。然後將視圖綁定到這些屬性?也許[這](http://stackoverflow.com/questions/1779117/how-to-get-a-liststring-collection-of-values-from-app-config-in-wpf)是有幫助的。 – 2013-04-23 09:50:18

回答

1

這可能幫助:Silverlight: Declaring a collection of data in XAML?

然後,您可以通過使用聲明的集合控制的資源屬性來訪問它

編輯例如:

您需要聲明新的集合類型,你不能聲明在XAML中的泛型類型:

using System.Collections.Generic; 

namespace YourNamepace 
{ 
    public class Genders : List<string> 
    { 
    } 
} 

然後你在XAML中聲明的列表,添加後必要的命名空間:

xmlns:local="clr-namespace:YourNamespace" 
xmlns:sys="clr-namespace:System;assembly=mscorlib" 
... 
<Window.Resources> 
    <local:Genders x:Key="AvailableGenders"> 
     <sys:String>Female</sys:String> 
     <sys:String>Male</sys:String> 
    </local:Genders> 
</Window.Resources> 

你當然可以在裏面聲明更復雜的數據結構。然後,用它作爲你的ListBox的的ItemsSource:

<ListBox ItemsSource="{Binding Source={StaticResource AvailableGenders}}"/> 

這工作,我測試過它剛纔:-)

+0

謝謝你。你知道列表中的項目是否可以用作我的列表框的項目源?我的意思是在XAML中創建的那個? – JennyJane 2013-04-23 09:35:20

+0

當然,你可以使用類似'ItemsSource = {Binding Source = {StaticResource YourCollectionKey}}' – 2013-04-23 12:04:35

+0

我不能使用XAML創建一個列表出於某種原因,你會介意給我看一些例子,提供了?非常感謝您的幫助。 – JennyJane 2013-04-25 01:42:49

相關問題