C#WPF如何在由datatemplate中的对象列表组成的列表框中设置项
C#-WPF 我有一个列表框(“lstCustomer”),上面有一个“Id\u Name”对象列表 从代码的某个点,我获得一个ID-例如“2” 如何以编程方式选择ID为2的listBox元素 lstCustomer.SelectedIndex= 代码-对列表进行popoleC#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
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";