С шаблоном DataGridColumnHeader я создал метку, которая должна показывать только числовое значение рядом с текстом заголовка, если мультисвязывание соответствует правилам.
Я успешно создал этот код в UserControl и он работает как положено.
Но теперь для элемента управления Windows это больше не работает, и я совершенно потерял дар речи, почему это так.
Строка <Binding Path="Text" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged"/>
в Multibinding предназначена для привязки к свойству Text фактического заголовка. Но эта привязка, похоже, не работает.
Я получаю следующее сообщение об ошибке:
System.Windows.Data Предупреждение: 40: Ошибка пути BindingExpression: «Текст»
свойство не найдено в 'object' '' iReportViewModel '
(HashCode = 36680867). BindingExpression: Path = Text;
DataItem = 'iReportViewModel' (HashCode = 36680867); целевой элемент
'Label' (Name = 'ColumnHeaderSortingNumber'); целевое свойство
«Содержимое» (тип «Объект»)
Но как это работает на моем другом пользовательском контроле с точной копией и вставленным кодом?
Почему он смотрит на ViewModel? Я ожидал получить доступ к ViewModel, если он определен так: Path = "DataContext.Text", как вторая строка. Это должно было получить доступ к тексту (заголовку) в том же заголовке.
Любая идея помочь мне будет высоко оценена,
<Style x:Key="DatagridColumnHeaderCustomTemplateStyle" TargetType="{x:Type DataGridColumnHeader}">
...
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
<Grid>
<Grid.ColumnDefinitions>
...
</Grid.RowDefinitions>
<theme:DataGridHeaderBorder>
...
</theme:DataGridHeaderBorder>
<Label FontSize="8" FontWeight="Bold" Background="Transparent" Style="{StaticResource ColumnHeaderSortingLabel}" x:Name="ColumnHeaderSortingNumber" Panel.ZIndex="1000" Visibility="Collapsed" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" Margin="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" >
<Label.Content>
<MultiBinding Converter="{StaticResource ColumnHeaderDictionaryConv}" ConverterParameter="LookupSecond" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
<Binding Path="Text" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged"/>
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type DataGridCellsPanel}}" Path="DataContext.SortCollectionHeader" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged"/>
<Binding ... />
</MultiBinding>
</Label.Content>
</Label>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>