0

Windows Phone 7.1 の開発は初めてです。私はVB.NETで働いています。

「方法: Windows Phone 用の基本的なローカル データベース アプリケーションを作成する」と同様のアプリケーションに取り組んでいます。

上記のサンプルを使用して、追加と削除のコードを書くことができました。

しかし、更新コード...すべてのデータが表示されているページに戻ると、新しい情報で更新されません。別のページでレコードの詳細を表示すると、そこにあるため、情報は保存 (送信) されます。

すべてのデータが表示される XAML ページ コードは次のとおりです。

<ScrollViewer  Margin="12,148,12,90" Name="scrollViewerVendors">
        <ItemsControl ItemsSource="{Binding AllVendors}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Border BorderThickness="1" CornerRadius="12" Margin="2">
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="*" />
                                <RowDefinition Height="*" />
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>
                            <StackPanel Grid.Row="0" Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Center">
                                <TextBlock Text="{Binding Name}" FontSize="28" />
                            </StackPanel>
                            <StackPanel Grid.Row="1" Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Center">
                                <TextBlock Text="{Binding Address}" />
                            </StackPanel>
                            <Button Grid.Row="0" Grid.Column="1" Grid.RowSpan="2" 
                                x:Name="EditVendorButton" 
                                BorderThickness="1" 
                                Click="EditVendorButton_Click">
                                <Image Source="/Images/AppBar/appbar.edit.rest.png" />
                            </Button>
                            <Button 
                                Grid.Row="0" Grid.Column="2" Grid.RowSpan="2" 
                                x:Name="DeleteVendorButton" 
                                BorderThickness="1" 
                                Click="DeleteVendorButton_Click">
                                <Image Source="/Images/AppBar/appbar.delete.rest.png"  />
                            </Button>
                        </Grid>
                    </Border>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </ScrollViewer>

編集ページに書いた更新コード:

Using DemoAppDB As New DemoAppContext.DemoAppContext("Data Source=isostore:/DemoApp.sdf")
            Dim CurrentVendor = From VendorDetails In DemoAppDB.Vendors Where VendorDetails.VendorID = CInt(sVendorID) Select VendorDetails

            For Each Vendor In CurrentVendor
                Vendor.Name = TextBox1.Text
                Vendor.Address = TextBox2.Text
                Vendor.ContactPerson = TextBox3.Text
                Vendor.Phone = TextBox4.Text
                Vendor.Email = TextBox5.Text
                Vendor.Notes = TextBox6.Text
            Next
            'Save changes to the database
            DemoAppDB.SubmitChanges()
        End Using

VendorID はページ間で正常に渡されます。私はチェックしました。

データベースは更新されますが、ScrollView レコードを更新できないようです。ListView コントロールでも試してみました。同じ結果です。

モデル クラスは、INotifyPropertyChanged、INotifyPropertyChanging を実装します。viewmodel クラスは INotifyPropertyChanged を実装します。

他の詳細が必要な場合は、私に尋ねてください。これを読んでくれてありがとう!

4

1 に答える 1

0

チュートリアルを見たので、あなたは見逃したと思います

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
// Define the query to gather all of the to-do items.
var toDoItemsInDB = from ToDoItem todo in toDoDB.ToDoItems
                    select todo;

// Execute the query and place the results into a collection.
ToDoItems = new ObservableCollection<ToDoItem>(toDoItemsInDB);

    // Call the base method.
    base.OnNavigatedTo(e);
}

ここで、AllVendors を更新します。

ここで起こっていることは、アプリがメイン ページに戻った後、データを保持する ObservableCollection を再読み込みしていることです。

于 2012-05-29T15:03:09.060 に答える