【问题标题】:WPF design time setting data context for window without errorWPF设计时为窗口设置数据上下文没有错误
【发布时间】:2014-01-08 13:46:28
【问题描述】:

我的 XAML 文件是:

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:ViewModels="clr-namespace:Bookstore.Bookstore.ViewModels"
    x:Class="Bookstore.Views.MainWiew" 
    Title="Main Wiew" Height="350" Width="525">

    <Window.DataContext>
        <ViewModels:MainViewModel />
    </Window.DataContext>

    <Grid> 
    ...
    </Grid>
</Window>

当我跑步时,没关系。没问题。

但在设计时,有1个错误:

找不到数据源文件

我不想在代码隐藏中添加数据上下文。

那么,我该如何清理错误列表

编辑:

我的 MainViewModel.vb 文件:

Imports System.Collections.ObjectModel
Imports Bookstore.Bookstore.Models
Imports Bookstore.Bookstore.Commands
Imports System.Windows
Imports System.Windows.Input


Namespace Bookstore.ViewModels
Public Class MainViewModel
    Inherits ViewModelBase

    Sub New()
        LoadBooks()
    End Sub

    Private _currentBook As Book
    Private _books As New ObservableCollection(Of Book)()
    Private _bookstoreRepository As IBookstoreRepository = New BookstoreRepository()
    Private _removeBookCommand As ICommand

#Region "Public Properties"
    Public Property Books() As ObservableCollection(Of Book)
        Get
            Return _books
        End Get
        Set(value As ObservableCollection(Of Book))

        End Set
    End Property

    Public Property CurrentBook As Book
        Get
            Return _currentBook
        End Get
        Set(value As Book)
            _currentBook = value
            OnPropertyChanged("CurrentBook")
        End Set
    End Property

    Public Property RemoveBookCommand() As ICommand
        Get
            If _removeBookCommand Is Nothing Then
                _removeBookCommand = New DelegateCommand(Of Book)(AddressOf RemoveBook, AddressOf CanRemoveBook)
            End If
            Return _removeBookCommand
        End Get
        Set(value As ICommand)

        End Set
    End Property
#End Region

#Region "Functions"
    Private Sub LoadBooks()
        For Each book As Book In _bookstoreRepository.GetBooks()
            _books.Add(book)
        Next
    End Sub

    Private Function CanRemoveBook(book As Book) As Boolean
        Return Books.Count > 0 And Books.Contains(book)
    End Function

    Private Sub RemoveBook(book As Book)
        Books.Remove(book)
        CurrentBook = Nothing
    End Sub
#End Region

End Class

End Namespace

【问题讨论】:

  • MainViewModel 的创建者的代码是什么?
  • @FlashTek,我添加了我的 MainViewModel 代码

标签: wpf xaml datacontext


【解决方案1】:

您可以使用DesignerProperties.GetIsInDesignMode 方法检查设计时间,然后返回空数据或示例数据,而不是从外部源加载的数据。这将在设计器中显示示例数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2020-11-14
    • 2014-08-03
    • 2013-12-27
    • 2014-11-03
    相关资源
    最近更新 更多