试图通过Item Source使用dbml将存储过程函数结果传递给WPF

时间:2013-11-05 04:59:26

标签: c# wpf vb.net stored-procedures

首先,抱歉我的英语,因为它不是我的母语。我会尽量具体。我通常使用Windows Forms在连接到我的VB项目的mdf中创建存储过程。我所做的是添加一个dbml文件,然后将我的存储过程拖放到dbml设计器的functions列中。然后,我能够做到这样的事情:(在这种情况下,我的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窗体项目中运行良好,当我运行它时,它会显示数据库的那些值。问题是" DataSource"属性似乎不存在于WPF应用程序中,而且最类似于它的是" ItemsSources"属性。问题是,该属性返回三个值:" tutorial_keeper_real.tutorialstatusresult"在ComboBox中。

我在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 Form。好的,谢谢大家!抱歉我的英语不好......这不是我的母语。

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

Youtube video

1 个答案:

答案 0 :(得分: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的组合框!

就是这样!这对我很有帮助,并希望这对你们有用。