2014-06-25 52 views
0

我懷疑錯誤「無法創建MainViewModel的實例」是責任,但要完全誠實,我不確定。這是Visual Studio給我的唯一錯誤,代碼編譯和運行,儘管它;我遇到的問題是我的Listbox不顯示我的表中的數據。Table-Listbox數據綁定不會導致數據顯示

從MainPage.xaml中

相關樣品:

<phone:PhoneApplicationPage 
    x:Class="CarpetQuote.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768" 
    d:DataContext="{d:DesignData SampleData/MainViewModelSampleData.xaml}" /> 

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
     <ListBox x:Name="MainListBox" Margin="0,0,-12,0" ItemsSource="{Binding Carpets}" SelectionChanged="MainListBox_SelectionChanged" > 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel> 
         <TextBlock Text="{Binding carpetName}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" /> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </Grid> 
</phone:PhoneApplicationPage> 

下面MainViewModelSampleData.xaml;這是負責「無法創建MainViewModel的實例」的頁面。

<local:MainViewModel 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:CarpetQuote" 
    SampleProperty="Sample Value"> 

    <local:MainViewModel.Items> 
     <local:ItemViewModel LineOne="design one" LineTwo="Maecenas praesent accumsan bibendum" LineThree="Maecenas praesent accumsan bibendum dictumst eleifend facilisi faucibus habitant inceptos interdum lobortis nascetur"/> 
     <local:ItemViewModel LineOne="design two" LineTwo="Dictumst eleifend facilisi faucibus" LineThree="Pharetra placerat pulvinar sagittis senectus sociosqu suscipit torquent ultrices vehicula volutpat maecenas praesent"/> 
     <local:ItemViewModel LineOne="design three" LineTwo="Habitant inceptos interdum lobortis" LineThree="Accumsan bibendum dictumst eleifend facilisi faucibus habitant inceptos interdum lobortis nascetur pharetra placerat"/> 
     <local:ItemViewModel LineOne="design four" LineTwo="Nascetur pharetra placerat pulvinar" LineThree="Pulvinar sagittis senectus sociosqu suscipit torquent ultrices vehicula volutpat maecenas praesent accumsan bibendum"/> 
     <local:ItemViewModel LineOne="design five" LineTwo="Sagittis senectus sociosqu suscipit" LineThree="Dictumst eleifend facilisi faucibus habitant inceptos interdum lobortis nascetur pharetra placerat pulvinar sagittis"/> 
     <local:ItemViewModel LineOne="design six" LineTwo="Torquent ultrices vehicula volutpat" LineThree="Senectus sociosqu suscipit torquent ultrices vehicula volutpat maecenas praesent accumsan bibendum dictumst eleifend"/> 
    </local:MainViewModel.Items> 
</local:MainViewModel> 

我讀過一些關於錯誤的其他地方,但沒有相當似乎幫助。普遍的共識似乎是,編譯器不喜歡我的MainViewModel構造函數中的某些東西,但是我唯一需要的行是db = new CarpetContext(App.ConnString);,並且在功能上相同的代碼在另一個項目中運行時沒有錯誤。

如果這個錯誤不是責任失敗的綁定,這裏是App.xaml.cs的相關部分,其中數據庫創建。

public partial class App : Application 
{ 
    private static MainViewModel viewModel = null; 

    public static MainViewModel ViewModel 
    { 
     get 
     { 
      if (viewModel == null) 
      { 
       viewModel = new MainViewModel(); 
      } 

      return viewModel; 
     } 
    } 

    private static string connString = null; 
    public static string ConnString { get { return connString; } } 
    public App() 
    { 
     // Autogenerated code and comments snipped 

     if (connString == null) 
     { 
      connString = Resources["IsoDBConn"] as string; 
     } 
     createDB(); 
    } 

    private void createDB() 
    { 
     using (var db = new CarpetContext(ConnString)) 
     { 
      if (!db.DatabaseExists()) 
      { 
       db.CreateDatabase(); 
      } 
     } 
    } 

    private void Application_Activated(object sender, ActivatedEventArgs e) 
    { 
     if (!App.ViewModel.isDataLoaded) 
     { 
      App.ViewModel.loadData(); 
     } 
    } 
} 

最後(我感覺真的很糟糕的代碼牆),從MainViewModel引用的函數。

public bool IsDataLoaded 
{ 
    get; 
    private set; 
} 

public void loadData() 
{ 
    db.Carpets.InsertOnSubmit(new Carpet("StainMaster", 10)); 
    db.Carpets.InsertOnSubmit(new Carpet("Windsor", 12)); 
    db.Carpets.InsertOnSubmit(new Carpet("Homfray", 11.5m)); 
    db.Carpets.InsertOnSubmit(new Carpet("Wall Street", 15)); 
    db.Carpets.InsertOnSubmit(new Carpet("Axminster", 16.5m)); 
    db.SubmitChanges(); 
    Carpets = new ObservableCollection<Carpet>(db.Carpets.ToList()); 
    this.isDataLoaded = true; 
} 

回答

0

好的,這是一個奇怪的,但我在另一臺計算機上工作,並......它的工作。

原來問題出在我的Windows Phone SDK安裝上。列表框的確在填充,但文本不可見。

這可能太侷限了,很有用,會提示關閉。

相關問題