我有一个自定义的MyThumb用户控件,它实现了Thumb类。此用户控件使用ControlTemplate进行模板化,其中ItemsSource绑定到具有三个属性的自定义类的ObservableCollection。 ObservableCollection位于名为ImportFileColumns的代码中的公共属性中,并在InitializeComponent()之前填充。问题是,ObservableCollection填充了正确的数据,但是ControlTemplate永远不会得到数据绑定(TextBlock控件应该使用ColumnName属性中的值填充),所以我的假设是我在XAML中做错了。
这是XAML:
<ControlTemplate x:Key="columnsThumbTemplate">
<Grid Width="175" >
<ItemsControl Name="isTest" ItemsSource="{Binding ImportFileColumns}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Width="175">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" />
<ColumnDefinition Width="25" />
</Grid.ColumnDefinitions>
<Border BorderBrush="LightGray" BorderThickness="1,0,1,1" Background="White" Padding="10,5" Grid.Column="0">
<StackPanel Orientation="Horizontal" >
<TextBlock Text="{Binding Path=ColumnName}" Height="13" />
</StackPanel>
</Border>
<my:MyConnector x:Name="myRightConnector"
Template="{StaticResource tplRightConnector}"
Grid.Column="1"
IsConnectorClicked="False"
PreviewMouseLeftButtonDown="myConnector_PreviewMouseLeftButtonDown"
Canvas.Left="Auto"
Canvas.Right="Auto"
DragDelta="onDragDelta"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</ControlTemplate>
<my:MyThumb x:Name="myCustomColumnsThumb"
Canvas.Left="272"
Canvas.Top="400"
Template="{StaticResource columnsThumbTemplate}"
DragDelta="onDragDelta"
PreviewMouseLeftButtonDown="connector_PreviewMouseLeftButtonDown" />