gpt4 book ai didi

wpf - 从数据源拖放到 WPF 窗口不起作用

转载 作者:行者123 更新时间:2023-12-04 22:47:18 24 4
gpt4 key购买 nike

我的任务是为我的公司设计一个联系人管理程序。我们有 VS 2012,因为在我想用它来开发这个应用程序之前我从未使用过 WPF。

在使用数据库的 Entity Framework 时,我在开始绑定(bind)时遇到了巨大的问题,顺便说一句,首先是数据库。

我已按照此链接中的说明操作。
http://msdn.microsoft.com/en-us/data/jj574514.aspx

对象显示在数据源窗口中就好了。但是当我拖放到我的窗口时,什么也没有发生。不知道我做错了什么,也找不到其他有这个问题的人。

有人可以帮我从这里出去吗?我到处找。任何帮助表示赞赏

最佳答案

好的。我实际上浏览了那篇文章,只是为了表现出诚意,让你知道我真的想帮助你。

我得出以下结论:

  • 那篇文章展示了从 Entity Framework 上下文获取数据并将其显示在 WPF DataGrid 中的一个非常基本的场景。
  • 它没有任何类型的验证或业务规则。
  • 它没有任何 UI 行为,例如有条件地启用/禁用或显示/隐藏任何 UI 元素。
  • 在这种情况下,Designer 很有用,除了从/向数据库获取/保存数据外,您实际上不需要任何东西。
  • 不幸的是(或者幸运的是,对于我们所有以此为生的开发人员来说),大多数应用程序都需要一定程度的验证和业务规则以及一定程度的 UI 逻辑。
  • 设计器在开发复杂逻辑时真的没用。

  • 您可以在不需要复杂逻辑的情况下使用设计器,但是我必须警告您以下缺点:
  • Visual Studio WPF 设计器生成固定大小、固定位置的 UI。在具有不同屏幕分辨率和 DPI 设置的计算机上执行时,这些类型的 UI 效果不佳。就像winform一样。
  • 它还产生包含许多不必要的东西的 XAML(例如 x:Name="categoryIdColumn" 和类似 Margin="13,13,43,191" 的东西,从可维护性/可扩展性的角度来看,这些东西真的很糟糕)
  • 据我所知,设计器生成的 XAML 还包含一个 CollectionViewSource ,这既是好事也是坏事。这是一件好事,因为它在 DataGrid 中启用了 Design-Time Data ,但它也很糟糕,因为它用许多不需要的东西来膨胀你的 XAML,并引入了不必要的 <Window.Resources>,使事情变得复杂。

  • 现在,这是该 DataGrid 所需的非常少的 XAML,没有设计时数据支持:
    <Window x:Class="MiscSamples.DesignTimeDataGrid"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="DesignTimeDataGrid">
    <DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False">
    <DataGridTextColumn Header="Category Id" Binding="{Binding CategoryId}"/>
    <DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
    </DataGrid>
    </Window>

    你看?实际上,键入它(在 Intellisense 的帮助下更是如此)比浏览属性窗口并手动设置这些属性要快。

    我的建议是你熟悉 XAML,而不是坚持用困难的方式做事

    要记住的另一个非常重要的方面是,一般来说, you don't put anything in code-behind in WPF 因为它不是必需的,因此该教程实际上与 WPF Way of doing things 背道而驰,但这没关系,因为它实际上是一个 Entity Framework 教程,而不是 WPF 教程。

    ease of development



    你真的需要重新考虑你所谓的“易于开发”。当谈到 UI 开发时,我将“易于开发”称为实​​际上 being able to do what I want with the UI,而不必求助于涉及 P/Invoke(无论这意味着什么)和“所有者绘制”类型的东西的糟糕程序代码实践。

    WPF 提供了真正的开发简易性,而不是 winforms 所展示的虚假的开发简易性
  • winforms 让你可以和设计师一起做所有事情(这只是因为设计师生成的代码实际上非常糟糕,如果没有设计师,没有人会使用 winforms)但是当涉及到添加复杂的数据绑定(bind)或UI 逻辑你永远被 winforms 的无能所困。
  • WPF 鼓励手动编写 XAML,这不仅是因为 XAML 是声明性的(与程序化的 winforms 方法相反),还因为可定制性和可重用性的级别如此之高,以至于以设计者为中心的方法没有意义。


  • drag and drop is the easy way out



    不,这不对。这实际上是一条艰难的道路。简单的方法是学习 XAML 并能够执行 Things you can't even imagine to do with winforms

    如果以设计师为中心的方法对您来说仍然有意义,您可能想尝试 Expression Blend

    关于wpf - 从数据源拖放到 WPF 窗口不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18879346/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com