2014-04-14 41 views
0

通過很多很棒的幫助 - 我已經能夠使用SQLite數據庫中的兩個字段填充xaml視圖。我正在構建這個視圖/應用程序,只是爲了幫助我理解數據綁定。我現在想知道兩件事情。主要問題是這樣的:將大量字段綁定到視圖的方法是什麼

如果我在視圖上有50個字段 - 我是否仍然使用在此示例中使用的相同佈局?

其次,

不,我不滿意這個佈局(不是全部),但有一個更好的方式來做到這一點?

C#代碼

private void Window_ContentRendered(object sender, EventArgs e) 
{ 
     Activity act = new Activity(); 
     SQLiteConnection con = new SQLiteConnection(ClsVariables.StrDb); 
     con.Open(); 
     var sqlText =string.Format("SELECT [Activity_Category], [Activity_Category_Sub] FROM tblActivity WHERE [ActivityID] = 1;"); 
     var sqlCmd = new SQLiteCommand(sqlText, con); 
     using (var reader = sqlCmd.ExecuteReader()) 
     { 
      if (reader.Read()) 
      { 
       act.Activity_Category = reader["Activity_Category"] as string; 
       act.Activity_Category_Sub = reader["Activity_Category_Sub"] as string; 
      } 
     } 
     con.Close(); 

     this.DataContext = act; 
} 

XAML代碼:

<Window x:Class="TM.frmEdit" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Add/Edit/Delete" Height="195" Width="500" ContentRendered="Window_ContentRendered"> 
    <Grid Name="GridMain"> 
     <TextBlock Text="{Binding Activity_Category}" Height="26" Margin="10,50,0,0" VerticalAlignment="Top" Width="120"/> 
     <TextBlock Text="{Binding Activity_Category_Sub}" Height="26" Margin="10,90,0,0" VerticalAlignment="Top" Width="120"/> 
    </Grid> 
</Window> 
+0

當你說「佈局」時,你是指代碼的設計嗎? –

+0

對不起 - 我主要想知道我使用的方法是否正確(如果有更好的方法)。 – AndyDB

回答

2

(1)有更好的方法來進行查詢,在代碼中創建一個sql字符串。看看EntityFramework。這將簡化您的生活,因爲您將處理強類型的類對象而不是魔術(和易碎)字符串。它也將簡化您對Reader的依賴,並且一次只能填寫一個字段的屬性,這是不可擴展的。 只需搜索「entityframework sqlite」以獲取信息。 (2)如果您希望進一步擁抱數據綁定,請查看MVVM作爲設計模式。正如Terry所說,它會幫助你塑造你的數據,而不是依賴原始數據。儘管我不同意ViewModel是什麼,但那是因爲我傾向於每個View有一個VM,而不是每個模型一個VM。只是不同的做法:)

(3)看看C#的命名標準,並停止命名類屬性用下劃線分隔部分。這可能是你的Sql標準,但是一旦它成爲一個對象屬性,它就不再是一個SQL事物,因此可以按照你的喜好命名。

+0

是的,EF很好。但他的兩個問題更多的是關於視圖和數據綁定。先查看還是不行,真的有賴。 – terry

+1

實際上並不清楚 - 他對「佈局」這個詞的使用似乎已經被闡明爲「方法」,所以不僅僅是這個觀點。而是關於他的方法是否正確。我會說,不,他的方法來檢索數據和填充綁定屬性絕對不是最優的! – Mashton

+0

謝謝你們 - 很多美食 - 非常感謝。 – AndyDB

1

佈局/視圖真的取決於你的需要,這就是數據綁定的美。

如果您有50個字段,但您的用戶只關心2個,那麼您只需要顯示2個字段的數據。

爲了獲得更好的視野,您可以使用設計師,例如Blend來創建複雜的佈局和動畫。

+0

再次感謝 - 在一個表單上最多可以有50個字段,所以我只是問我在這個例子中使用的方法是否也是50個字段的正確方法。 – AndyDB

+0

基本上是的,但有些時候你不會只顯示* raw *數據。你將需要一些字符串格式,值轉換器,datatemplate。你會喜歡看MVVM,我相信在你對MVVM有一些好感之後,你會知道你的Activity對象就是你的示例中的VM。 – terry

+0

不,您使用Reader和填充類屬性的方法不可伸縮。當然你可以做到,但正如你所說 - 當你達到50時,你會厭倦這一點。當你達到1000時,你的代碼將成爲一場噩夢。使用像EntityFramework這樣的代碼將會把這段代碼變成幾行'Activity Act = ObjectContext.Activities.Where(x => x.id.Equals(mySearchedForId))' – Mashton

相關問題