我需要显示一个来自Web服务调用的描述列表。我选择在ItemControl上显示它们。
为了简化,我们假设数据的形式如下:
public class Voce
{
public string Ita { get; set; }
public string Eng { get; set; }
}
控件的XAML代码为:
<ItemsControl x:Name="table" Margin="20,70,20,92" Background="#FFFFF3F3">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Name="myDesc" Text="{Binding Ita}"></TextBlock>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
当然我设置:
private List<Voce> listaVoci;
...
table.ItemsSource = listaVoci;
此操作正常,并设置为Ita字段。
现在我需要切换文本并在同一个List<>中显示Eng字段(点击按钮),但我不知道如何操作。我试着这样做:
Binding binding = new Binding("Text")
{
Source = listaVoci,
Path = new PropertyPath("Eng")
};
SetBinding( TextBlock.TextProperty, binding);
但是,当然,没有对内部TextBlock的引用。
或者将描述分成两个列表并切换表是否更好/更简单?ItemSource?
1条答案
按热度按时间9ceoxa921#
您可以将
DataTrigger
添加到模板中,并绑定到某个决定显示哪个值的属性。在下面的例子中,我使用
ItemsControl
的Tag
属性来实现这一点:然后,只需在按钮单击事件处理程序中设置属性,以显示
Voce
对象的Eng
属性的值: