2015-07-21 67 views
-1

使用Prism庫我已經建立了一個模型繼承BindableBase(INotiftyPropertyChanged)。如何添加一個新的列表框項目foreach列表<string>

然後在ViewModel中,在構造函數中,我創建了一個ReadConnections類的新對象,它將從本地XML文件返回一個連接名稱列表。

然後我在ReadConnections類中設置方法GetIdNode的Connections屬性。

最後,我將Listbox ItemSource綁定到Connections屬性。當我運行應用程序時,Listbox不會被任何列表框項目填充。我不確定綁定ItemSource是否正確,我從來沒有將任何東西綁定到列表框。

模型類:

public class LoginDialogModel : BindableBase 
{ 
    private List<string> _connections; 

    public List<string> Connections 
    { 
     get { return _connections; } 
     set { _connections = value; } 
    } 
} 

視圖模型類的構造函數:

public LoginDialogVM() 
    { 
     ReadConnections read = new ReadConnections(); 
     LoginModel.Connections = read.GetIdNodes(); 
    } 

XAML:

<ListBox HorizontalAlignment="Left" Height="247" Margin="10,10,0,0" 
VerticalAlignment="Top" Width="135" ItemsSource="{Binding LoginModel.Connections}"/> 
+0

你需要某種形式的變更通知在你的清單,清單沒有實現這樣的事件使用ObeservableCollection 來代替。 –

+0

你有沒有設置datacontext?另外,使用BindableBase的SetProperty進行通知。 – Helic

+0

這兩個建議的工作。 Observable集合起作用了,我也沒有意識到我遺漏了SetProperty,它也起作用。 –

回答

1

你的屬性格式(與BindableBase繼承)應該是這樣的

public class LoginDialogModel : BindableBase 
{ 
    private List<string> _connections; 

    public List<string> Connections 
    { 
     get { return _connections; } 
     set { SetProperty(ref _connections,value); } 
    } 
} 

正如你看到的,SetProperty方法需要關心NotifyProperty

相關問題