我有一个ItemsControl
,其ItemsSource
设置为Binding
到ObservableCollection
ViewModel
。我在其Button
中使用ItemTemplate
控件来显示我的数据,我在DataTemplate
中使用了Button
,并且没有Binding
数据正在显示。以下是有问题的XAML:
<ItemsControl ItemsSource="{Binding Path=ConnectedInstruments}" HorizontalAlignment="Left">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Height="60" VerticalAlignment="Top">
<Button.ContentTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=ModelCode}" />
<TextBlock Text="{Binding Path=SerialNumber}" />
</StackPanel>
</DataTemplate>
</Button.ContentTemplate>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
正在填充TextBlock
Button
中的DataTemplate
个控件。我理解这与Binding
路径有关,但是我不知道我做错了什么。有人可以让我走上正轨吗?
修改
public class Instrument
{
public string ModelCode { get; set; }
public string SerialNumber { get; set; }
}
public class ViewModel
{
public ObservableCollection<Instrument> ConnectedInstruments { get; set; }
}
我知道ItemsControl
与Binding
正确ObservableCollection
正在显示Button
控件的正确计数,只有模板化数据丢失。
答案 0 :(得分:2)
您需要使用ContentTemplate
而不是像这样直接设置Button Content
的任何特定原因? :
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Height="60" VerticalAlignment="Top">
<StackPanel>
<TextBlock Text="{Binding Path=ModelCode}" />
<TextBlock Text="{Binding Path=SerialNumber}" />
</StackPanel>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>