0

首先,对不起我的英语,因为它不是我的母语。我会尽量具体。我通常使用 Windows 窗体在连接到我的 VB 项目的 mdf 中创建存储过程。我所做的是添加一个 dbml 文件,然后将存储过程拖放到 dbml 设计器中的函数列中。然后,我可以这样做:(在这种情况下,我的 DBML 文件名是“教程数据”)

 Public Class Form1

  Private status As New TutorialsDataDataContext

  Private Sub Form1_Load(sender As System.Object, e As    System.EventArgs) Handles MyBase.Load

    Dim rec = status.TutorialStatus()

    ComboBox1.DataSource = rec

  End Sub
End Class

TutorialStatus() 返回 3 个值。像这样的代码在 Windows 窗体项目中运行良好,当我运行它时,它会向我显示数据库的那些值。问题是 WPF 应用程序中似乎不存在“DataSource”属性,而与它最相似的是“ItemsSources”属性。问题是,该属性返回三个值:组合框中的“tutorial_keeper_real.tutorialstatusresult”。

我在 WPF 项目中编写的代码如下所示:

Class MainWindow 

  Private status As New TutorialsDataDataContext


  Private Sub winMain_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
    Dim rec

    rec = status.TutorialStatus()

    ComboBox1.ItemsSource = rec


  End Sub
End Class

它将函数所做的操作返回到数据库,但不返回实际值。有什么方法可以实现我在使用 WPF 的 Windows 窗体项目中所做的事情?请不要告诉我通过 Ado.net 或类似的方式执行此操作,因为我知道这一点,但我更愿意这样做……或者我宁愿返回 Windows 窗体。嗯,谢谢大家!!对不起,我的英语很差……这不是我的母语。

PD。如果有人对我如何使用 dbml 基于存储过程创建函数有任何疑问,你可以看到这个视频,因为这个人做得很好:

Youtube 视频

4

1 回答 1

1

好吧,我终于克服了。我从 MSDN 收到了这个非常准确的答案:

“您可以从过程中获取原始数据。看起来不错。但是在 WPF 中,我们应该绑定您希望在 XAML 代码或代码后面显示的属性。看起来像,我们希望在组合框中显示 ID 属性,”

XAML 代码:

<StackPanel>
    <ComboBox x:Name="Combo" DisplayMemberPath="ID" />
</StackPanel>

C# 代码(可以使用工具转换为 Visual Basic)

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        List<Raw> RawData = new List<Raw>() 
        {
            new Raw(){SearchData = "Jimmy", ID="001"},
            new Raw(){SearchData = "Jack", ID="002"},
            new Raw(){SearchData = "Jim", ID="003"},
            new Raw(){SearchData = "Jerry", ID="004"},
            new Raw(){SearchData = "Jason", ID="005"},
            new Raw(){SearchData = "Jeff", ID="006"},
        };
        this.Combo.ItemsSource = RawData;
    }
}

public class Raw
{
    public string SearchData { get; set; }
    public string ID { get; set; }
}

结果将是一个显示 ID 的组合框!

就是这样!它真的帮助了我,希望这对你们也有帮助。

于 2013-11-08T02:02:33.217 回答