Data Source を生成し、 VS IDE で WPF Control を作成し易くしましょう。
唯、 この作業が終わっても、 取得・追加・削除・編集 等のデータ操作は行えません。
まぁ、準備作業の手順の ひとつ になります。
前回 の作業で、 Database と Project が紐付いた関係になっています。
今度は、Database と WPF Control を紐付けます。
Database の構造(スキーマ)に合った WPF Control を選択出来る様にします。
DataGrid とか、TextBox とか、CheckBox とか、 です。
Toolbox からではなく、 Data Source から、 WPF Control を選べる様にしましょう。
それには、 データソースを設定する必要があります。
手順は、
VIEW > Other Windows > Data Source と進み、
Add New Data Source... をクリックします。
ウィザードに従い、 Object を選択します。
以下は、 Database Table 数が多い場合の方法です。.
Project をチェックし展開すると 自前の Project の Class が全て選択された状態になっている筈です。
そこから、Entity Framework が作成した Database Table の Class 以外を外します。
具体的には、 Application と xxxWindow と <db-name>Entities とを外します。
最終的に、Database のテーブルに基づく Class のみを選択
(Wizard) Object > Next
Project > (expand) > Project > (Check)(expand) > Application & xxxWindow & <db-name>Entities (UnCheck)
= Only [Class] <db-table>
ウィザードが完了すると、 Data Source が 準備され、 ここから Window に WPF Control としてドラッグが可能な状態になります。
各項目の ComboBox を展開すると 幾つかの候補として表示されます。
Entity Framework で複数形の名称で生成しても、 ここでの表示は Database Table の元の名称です。
更に、各列はスキーマで指定した型を継承したものが用意されています。
因みに、 Database のテーブルひとつを選択し、DataGrid で配置して見ます。
単に、IDE 上で Data Source から Window に ドラッグドロップするだけ で ここ迄やってくれます。
では、実際に、生成されたコードを。
写真管理システムから、その片鱗をお見せします。.
xaml
<Windowcode VB
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfAppEF6_DbFirstModel" mc:Ignorable="d" x:Class="MainWindow"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<CollectionViewSource x:Key="CameraViewSource" d:DesignSource="{d:DesignInstance {x:Type local:Camera}, CreateList=True}"/>
</Window.Resources>
<Grid DataContext="{StaticResource CameraViewSource}">
<DataGrid x:Name="CameraDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" Margin="60,40,60,80" ItemsSource="{Binding}" EnableRowVirtualization="True" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn x:Name="CameCardColumn" Width="SizeToHeader" Header="Came Card" Binding="{Binding CameCard}"/>
<DataGridTextColumn x:Name="CameFullColumn" Width="SizeToHeader" Header="Came Full" Binding="{Binding CameFull}"/>
<DataGridTextColumn x:Name="CameIDColumn" Width="SizeToHeader" Header="Came ID" Binding="{Binding CameID}"/>
<DataGridTextColumn x:Name="CameNameColumn" Width="SizeToHeader" Header="Came Name" Binding="{Binding CameName}"/>
<DataGridTextColumn x:Name="CameNoColumn" Width="SizeToHeader" Header="Came No" Binding="{Binding CameNo}"/>
<DataGridTextColumn x:Name="CameRAWColumn" Width="SizeToHeader" Header="Came RAW" Binding="{Binding CameRAW}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
Class MainWindow
Private Sub Window_Loaded(sender As Object, e As RoutedEventArgs) Handles MyBase.Loaded
Dim CameraViewSource As System.Windows.Data.CollectionViewSource = CType(Me.FindResource("CameraViewSource"), System.Windows.Data.CollectionViewSource)
'Load data by setting the CollectionViewSource.Source property:
'CameraViewSource.Source = [generic data source]
End Sub
End Class
こんな画面です。
でも、データが表示されませんね。
取得・追加・削除・編集 等のデータ操作は、別途、書いてあげなければいけません。
それは次回 VB EF6 Entity Framework お試し 3 データ操作 表示 で。
0 件のコメント:
コメントを投稿