【问题标题】:Two AutoCompleteBox controls in two different tabs in wpfwpf中两个不同选项卡中的两个AutoCompleteBox控件
【发布时间】:2016-02-28 15:18:48
【问题描述】:

我在 wpf 窗口的两个不同选项卡中使用了两个 AutoCompleteBox 控件。

第一个选项卡中的控件工作正常。 First Control

但是第二个选项卡中的控件,数据是绑定的,我可以在下拉列表中看到匹配的字符串。

我无法使用鼠标或箭头键从列表中选择项目。 Second Control

当我将第二个控件移到新窗口时,它工作正常。

我不明白真正的问题是什么?

请查看以下代码:

第一个标签中的自动完成框

<ctrls:AutoCompleteBox  Grid.Column="1" x:Name="txtFirst" VerticalAlignment="Center" Margin="0,0,0,10" />

第二个标签中的自动完成框

<ctrls:AutoCompleteBox  Grid.Column="1" x:Name="txtSecond" VerticalAlignment="Center" Margin="0,0,0,10" />

Tab 控件的 Xaml 代码

<TabControl Grid.Row="1"
                    x:Name="tabCtrl"
                    SelectionChanged="tabCtrl_SelectionChanged">
            <TabItem x:Name="tab1"
                     Header="First">
                       <ScrollViewer>
                       <Grid>
                         <Grid.RowDefinitions>
                            <RowDefinition Height="auto" />
                          </Grid.RowDefinitions>
                           <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="200" />
                            <ColumnDefinition Width="500" />
                        </Grid.ColumnDefinitions>
                        <TextBlock Text="First"
                                   VerticalAlignment="Center"
                                   Margin="0,0,0,10" />
                        <ctrls:AutoCompleteBox  Grid.Column="1"
                                                x:Name="txtFirst"
                                                VerticalAlignment="Center"
                                                Margin="0,0,0,10" />
                      </Grid>
                      </ScrollViewer>
            </TabItem>        
            <TabItem x:Name="tab2"
                     Header="Second">
                       <ScrollViewer>
                       <Grid>
                         <Grid.RowDefinitions>
                            <RowDefinition Height="auto" />
                          </Grid.RowDefinitions>
                           <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="200" />
                            <ColumnDefinition Width="500" />
                        </Grid.ColumnDefinitions>
                        <TextBlock Text="Second"
                                   VerticalAlignment="Center"
                                   Margin="0,0,0,10" />
                        <ctrls:AutoCompleteBox  Grid.Column="1"
                                                x:Name="txtSecond"
                                                VerticalAlignment="Center"
                                                Margin="0,0,0,10" />
                       </Grid>
                      </ScrollViewer>
            </TabItem>        
 </TabControl>

以及背后的代码

var data = db.tblname.Select(c => c.propertyname).ToList();
txtFirst.ItemsSource = data;

var data1 = db.tblname.Select(c => c.propertyname).ToList();
txtSecond.ItemsSource = data1;

【问题讨论】:

  • 如果您不向我们展示您的代码,我们将无法真正帮助您..
  • @CodingMadeEasy 我已经发布了代码。请帮忙

标签: c# asp.net wpf


【解决方案1】:

你的 C# 代码很好。

您应该看看 XAML。

(也向我们提供 XAML。)

【讨论】:

  • 我已经发布了 xaml 代码。请查看图片以获得更好的理解。谢谢
  • @jayakrishnanGounder 看来您的 XAML 是正确的。有东西挡住了你的第二个控制。如果您可以将 ZIP 与您的项目一起提供给 DropBox/OneDrive/GoogleDrive 临时。我去看看,
【解决方案2】:

在彻底调试我的代码后,我发现问题是由于 TabControl 的 SelectionChanged 事件造成的。

每当我从 Autocompletebox 控件中选择一个项目时,TabControl 的 SelectionChanged 事件就会被触发,这会导致混乱,因为我的 Autocompletebox 绑定逻辑在 SelectionChanged 事件中。

我仍然不明白为什么我的 Autocompletebox 控件在没有为 Autocompletebox 控件注册 SelectionChanged 事件的情况下触发 TabControl 的 SelectionChanged 事件。

但下面的代码解决了这个问题

private void tabCtrl_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (e.Source is TabControl)
            {
              // Business logic for binding autocompletebox
            }
        }

感谢大家的支持!

【讨论】:

    猜你喜欢
    • 2011-01-18
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    相关资源
    最近更新 更多