首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据检索

数据检索
EN

Stack Overflow用户
提问于 2013-12-01 15:56:55
回答 1查看 380关注 0票数 0

我有一个文本框,在那里输入的内容必须在datagrid中搜索。

为了清晰起见,请在链接中显示图片。https://www.dropbox.com/s/8s98bes1g54xjaz/Search.png

我使用MVVM模型。

代码语言:javascript
复制
XAML:
Textbox:

    <TextBox x:Name="txtZoeken" HorizontalAlignment="Center" VerticalAlignment="Center" Height="29" Grid.Row="0" TextWrapping="Wrap" Width="238" FontSize="20" Text="Zoeken..."/>

Datagrid:
    <DataGrid ItemsSource="{Binding Contactpersons}" AutoGenerateColumns="False" x:Name="PersonenGrid" Grid.Column="1" Margin="35,99,8,10" Grid.Row="5" Grid.ColumnSpan="3">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="SelectionChanged">
                        <cmd:EventToCommand Command="{Binding EditCommand}" PassEventArgsToCommand="True"/>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
                <DataGrid.Columns >
                    <DataGridTextColumn Header="ID"  Binding="{Binding ID}"/>
                    <DataGridTextColumn Header="Naam"  Binding="{Binding Name}"/>
                    <DataGridTextColumn Header="Bedrijf" Binding="{Binding Company}" />
                    <DataGridTextColumn Header="Functie" IsReadOnly="True" Binding="{Binding JobRole/Name}"/>
                    <DataGridTextColumn Header="Stad" Binding="{Binding City}" />
                    <DataGridTextColumn Header="E-mail" Binding="{Binding Email}" />
                    <DataGridTextColumn Header="Telefoon" Binding="{Binding Phone}" />
                    <DataGridTextColumn Header="GSM" Binding="{Binding Cellphone}" />
                </DataGrid.Columns>
            </DataGrid>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-01 17:30:55

可以在ViewModel中创建一个名为SelectedPerson的附加属性。

代码语言:javascript
复制
        private Person_selectedperson;

        public Person SelectedPerson
        {
            get { return _selectedperson; }
            set
            {
                _selectedperson = value;
                OnPropertyChanged("SelectedPerson");
            }
        }

此属性应表示Contactpersons集合中的一个实例。然后,将此属性绑定到数据网格中的SelectedItem。

代码语言:javascript
复制
<DataGrid ItemsSource="{Binding Contactpersons}" SelectedItem="{Binding SelectedPerson}"

然后在与textbox搜索按钮相关的事件/方法中。运行一个linq查询或类似的内容,以在集合中找到第一个匹配项,并将SelectedPerson设置为该项(我是在搜索单击事件中完成的,同时快速编写代码,但是,您可能希望在视图模型中放置命令以更好地遵守mvvm).

代码语言:javascript
复制
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            string searchValue = textbox1.Text;
            vm.SelectedPerson = vm.Contactpersons.Where(a => a.LastName.Contains(searchValue)).FirstOrDefault();
        }

除了本例之外,还需要额外的错误处理(检查是否有匹配等)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20314062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档