【问题标题】:WPF AutoCompleteBox multiple fieldsWPF AutoCompleteBox 多个字段
【发布时间】:2013-10-22 20:39:31
【问题描述】:

我有一个 WPF 自动完成框,其中填充了从数据库中查询的 Organization_Names 列表。现在,当用户从自动完成框下拉列表中选择组织名称时,我想获取 Organization_ID。我可以再次查询数据库以根据所选的 Organization_Name 获取 ID,但我认为有更好的方法。如何在下拉列表中添加一个不可见的列,使其不会显示但我可以获得它的值?我对 WPF 很陌生。任何帮助将不胜感激。

谢谢, 亚历克斯

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    您可以将自动完成框绑定到对象。

    class MyClass
    {
        public int Organization_ID{ get; set; }
        public string Organization_Names{ get; set; }
    }
    
    <controls:AutoCompleteBox x:Name="autoCompleteBox1"    
          SelectionChanged="autoCompleteBox1_SelectionChanged"      
          FilterMode="Contains"              
          IsTextCompletionEnabled="True">
        <controls:AutoCompleteBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Organization_Names}" />
            </DataTemplate>
        </controls:AutoCompleteBox.ItemTemplate>
    </controls:AutoCompleteBox>
    
    private void autoCompleteBox1_SelectionChanged(object sender, RoutedEventArgs e)
    {
       MessageBox.Show(((MyClass)autoCompleteBox1.SelectedItem).Organization_ID);
    }
    

    【讨论】:

    • 感谢您的快速响应。如何将查询结果(具有 2 列的日期表)绑定到自动完成框?感谢您的进一步解释。
    • 您需要遍历数据表并将结果添加到列表List&lt;MyClass&gt; list = new List&lt;MyClass&gt;();,然后将该列表用作自动完成框项目来源:autoCompleteBox1.ItemSource = list;
    • 感谢您的帮助。我能够从数据表中填充自动完成框。但是,当我从下拉列表中进行选择时,它会显示 namespace.class。如何让它显示组织名称?谢谢。
    • 覆盖我班级的 ToString() 方法就可以了。感谢您的帮助。
    猜你喜欢
    • 2011-06-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多