2012-09-10 28 views
3

我有以下XAML -設置列表框的ItemsSource到它的屬性的含

<Window x:Class="DataTemplateTest.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="400" Width="600" Loaded="Window_Loaded">  
    <Grid> 
     <ListBox Height="380" Margin="10,12,0,0" Width="355"/> 
    </Grid> 
</Window> 

和下面的代碼隱藏 -

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     _nameList = new List<string> 
         { 
          "X", 
          "Y", 
          "Z" 
         }; 
    } 

    private List<string> _nameList; 
    public List<string> NameList 
    { 
     get { return _nameList; } 
    } 
} 

我想設置NameListItemsSource來自xaml的ListBox,而不是來自代碼隱藏的。我怎麼做?

編輯:我知道MVVM的做法。但這是不是我在問什麼。

編輯:這不是我不喜歡MVVM左右。在做一些快速測試時,我意識到我不知道如何做到這一點。所以,想知道是否有可能,並試圖學習。無論如何使用StaticResource

+1

請解釋你爲什麼拒絕使用MVVM,也不想使用後面的代碼來設置列表。您已經在使用後面的代碼來創建列表。爲什麼不把它放在那裏? –

+0

@DanielHilgarth:它不是拒絕或任何類似的東西。執行一個快速測試,我只是卡在這裏,並意識到我不知道如何做到這一點。所以我只是想學習。 – atiyar

+0

謝謝。我在問,因爲使用不同於最常用方式的動機會影響我給出的答案。 –

回答

2

如果你的意思的「不是在做MVVM路」,你不希望使用的ViewModels那麼你 CAN數據綁定到「代碼隱藏」下面的步驟:

設置在XAML綁定:

<ListBox ItemSource="{Binding NameList}"/> 

,並設置DataContextthis您在Window_Loaded事件填入您的列表如後:

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    _nameList = new List<string> 
        { 
         "X", 
         "Y", 
         "Z" 
        }; 
    DataContext = this; 
} 

編輯:如果你不想設置DataContext,你可以直接綁定到窗口:

<Window Name="window" ... /> 

    <ListBox ItemsSource="{Binding NameList, ElementName=window}"/> 

或者你可以使用AncestorBinding作爲

<ListBox ItemsSource="{Binding NameList, RelativeSource={RelativeSource AncestorType=Window}}"/> 

但是我這兩種情況下的列表爲空因爲視圖不會被你在加載事件中填充你的列表的事實通知。因此,您需要使用INPC來通知"NameList"屬性已更改。

+0

可以不設置'DataContext'嗎?對不起,我忘了在提問中提到這一點。 – atiyar

+0

對於DataBinding的工作,你需要在某處設置'DataContext'。 – nemesv

+0

可以使用'StaticResoure'完成嗎? – atiyar

相關問題