0

当我在 ComboBox 中进行选择,然后在 TextBox 中键入一些文本时,我希望在 TextBox 中包含可见的 ID 或 FirstName 或 LastName 的 AutoSuggestion 列表(基于 ComboBox 选择)。像这样,现在它只适用于 FirstName。

我有问题以某种方式为 TextBlock 设置动态绑定。请帮忙。提前致谢!码头

我有组合框:

 <ComboBox Height="23" Name="cbAttrib" Width="120" Margin="0,8,0,0">
          <ComboBoxItem>ID</ComboBoxItem>
          <ComboBoxItem>FirstName</ComboBoxItem>
          <ComboBoxItem>LastName</ComboBoxItem>             
  </ComboBox>

我有文本框:

<TextBox Name="txtSearch" TextChanged="txtAutoSuggestName_TextChanged"/>

而这个列表框:

 <ListBox Name="listBoxSuggestion" Visibility="Hidden" SelectionChanged="ListBox_SelectionChanged">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock DataContext="{Binding FirstName}"/>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

在代码中我有这个方法:

private void txtAutoSuggestName_TextChanged(object sender, TextChangedEventArgs e)
    {
        listBoxSuggestion.Items.Clear();
        if (txtSearch.Text != "")
        {
            ComboBoxItem cb = (ComboBoxItem)cbAttrib.SelectedItem;                
            Collection<Person> namelist = proxy.PersonSearch(txtSearch.Text, cb.Content.ToString());               
            if (namelist.Count > 0)
            {                   
                listBoxSuggestion.Visibility = Visibility.Visible;
                foreach (var obj in namelist)
                {
                    listBoxSuggestion.Items.Add(obj);                        
                }
            }
        }
        else
        {
            listBoxSuggestion.Visibility = Visibility.Hidden;
        }
    }

    private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (e.AddedItems.Count > 0)
        {
            txtSearch.Text = (e.AddedItems[0] as Person).FirstName.ToString();
            listBoxSuggestion.Visibility = System.Windows.Visibility.Hidden;
        }
    }
4

1 回答 1

0

你没有绑定Text所以什么都不会显示

您只需绑定DataContext,如果没有与它相关的其他绑定,它什么也不做。只需交换那个(或添加Text="{Binding}"哪个将绑定到DataContext哪个是FirstName),如果你的逻辑是正确的,它应该可以工作。

(而不是清除和添加到Items你应该只设置ItemsSourcelistBoxSuggestion.ItemsSource = namelist;

编辑:要使绑定适用于不同的建议,请将绑定路径更改为Value并制作ItemsSource一些具有Value属性的简单对象的集合(例如,使用 LINQ 和匿名对象)。

于 2012-01-06T00:14:50.093 回答