我有一个列表框,列表框的每一行包含2个文本块和2个按钮。 每当我单击列表框中任何一行的第一个按钮,它将从列表框中显示该行的第一个文本块的文本,每当我单击列表框的任何行的第二个按钮时,它将说出该行的第一个文本块的文本。 考虑列表框的下方图片。如果我点击第二行的星形按钮,它将显示“sedulous”,如果我点击最后一行的扬声器按钮,它将说“低于”。 我怎样才能做到这一点??? 我的列表如下所示:
我在xaml中的列表框设计如下所示:
<ListBox x:Name="listBox1" FontSize="26" Width="400" Height="Auto" HorizontalContentAlignment="Stretch" SelectionChanged="listBox1_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Eng}" Width="150"/>
<Button Content="" Height="Auto" Name="b1" Width="100" BorderThickness="0" Background="DarkGreen" />
<Button Content="" Height="Auto" Name="b2" Width="100" BorderThickness="0" Background="DarkGreen" />
</StackPanel>
<TextBlock Text="{Binding Path=Bng}" Width="150"/>
<Rectangle Height="2" Width="400" Fill="YellowGreen" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我制作清单的代码是:
List<dataLists> mylist = new List<dataLists>();
string word = textBox1.Text;
if (db != null)
{
var contacts = (from m in db.Dics where m.English.StartsWith(word) select new { m.English, m.Bangla }).Take(5);
string s1, s2;
try
{
foreach (var a in contacts)
{
s1 = a.English;
s2 = a.Bangla;
mylist.Add(new dataLists() { Eng = s1, Bng = s2 });
}
}
catch (Exception ex) { MessageBox.Show(ex.ToString()); }
listBox1.ItemsSource = mylist;
任何人都可以解决这个问题吗?
答案 0 :(得分:1)
你可以在按钮的onclick事件中轻松管理它,将标记设置为textblock的文本和
onclick事件中的
textbox.text =(发件人为按钮).Tag.Tostring()