C#WPF如何在由datatemplate中的对象列表组成的列表框中设置项

C#WPF如何在由datatemplate中的对象列表组成的列表框中设置项,c#,wpf,data-binding,listbox,C#,Wpf,Data Binding,Listbox,C#-WPF 我有一个列表框(“lstCustomer”),上面有一个“Id\u Name”对象列表 从代码的某个点,我获得一个ID-例如“2” 如何以编程方式选择ID为2的listBox元素 lstCustomer.SelectedIndex= 代码-对列表进行popole List<Id_Name> list = new (); list.Add(new Id_Name { Id = "1" , Name = "John" }); list

C#-WPF 我有一个列表框(“lstCustomer”),上面有一个“Id\u Name”对象列表

从代码的某个点,我获得一个ID-例如“2” 如何以编程方式选择ID为2的listBox元素

lstCustomer.SelectedIndex=

代码-对列表进行popole

List<Id_Name> list = new ();
list.Add(new Id_Name { Id = "1" , Name = "John" });
list.Add(new Id_Name { Id = "2", Name = "Jim" });
list.Add(new Id_Name { Id = "3", Name = "Frank" });
lstCustomer.ItemsSource = list;
List=new();
添加(新的Id_Name{Id=“1”,Name=“John”});
添加(新Id_Name{Id=“2”,Name=“Jim”});
添加(新Id_Name{Id=“3”,Name=“Frank”});
lstCustomer.ItemsSource=列表;
XAML-列表框和数据模板

<ListBox x:Name="lstCustomer"  ItemTemplate="{StaticResource ResourceKey=Id_Name_Template}" />


<DataTemplate  x:Key="Id_Name_Template">
                <StackPanel>
                    <Grid >
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Column="0">
                            <Run FontWeight="Bold" Text="{Binding Id}"/>
                        </TextBlock>
                        <TextBlock Grid.Column="1" FontStyle="Italic" Text="{Binding Name}" />
                    </Grid>
                </StackPanel>
            </DataTemplate>

如果您不打算使用索引,我建议绑定ListBox的SelectedItem属性:

<ListBox x:Name="lstCustomer"
         ItemTemplate="{StaticResource ResourceKey=Id_Name_Template}"
         SelectedItem="{Binding SelectedId_Name}"/>

或者利用列表框的内置
SelectedValue
功能:

<ListBox x:Name="lstCustomer"
         ItemTemplate="{StaticResource ResourceKey=Id_Name_Template}"
         SelectedValuePath="Id"
         SelectedValue="{Binding SelectedId}"/>
在列表框上设置
SelectedValuePath=“Id”
,并设置
lstCustomer.SelectedValue=“2”
选择Jim。
在视图模型中
公共字符串Id{get;set;}
<ListBox x:Name="lstCustomer"
         ItemTemplate="{StaticResource ResourceKey=Id_Name_Template}"
         SelectedValuePath="Id"
         SelectedValue="{Binding SelectedId}"/>
public string SelectedId { get; set; } // plus notification

[...]
SelectedId = "2";