Я работаю в WPF, .NET 3.5 Framework.
У меня есть TabItem с DataContext из 'Request', пользовательский объект.У 'Request' есть свойство с именем 'Id'.
Содержимое TabItem является пользовательским элементом управления (который наследует DataContext, нет?), Который содержит DataGrid.DataGrid отображает коллекцию объектов «Request», один из которых является тем же экземпляром «Request», который является DataContext пользовательского элемента управления.
Я пытаюсь передать свойство «Id» текущей строкиа также 'Id' DataContext пользовательского элемента управления для их сравнения.
Я назвал свой пользовательский элемент управления (x: Name = "myRoot").Вот XAML связывания.Помните, что все это находится внутри «DataGridTemplateColumn»:
<Image x:Name="imgOpen" Source="open.ico" Width="10" Height="10">
<Image.Visibility>
<MultiBinding Converter="{StaticResource IsLinkedRequest}">
<Binding Path="Id" />
<Binding Path="DataContext.Id" ElementName="myRoot" />
</MultiBinding>
</Image.Visibility>
</Image>
Вот конвертер:
Dim datagridRecordId As Integer = CInt(values(0))
Dim currentReqId As Integer = CInt(values(1))
If currentReqId <> datagridRecordId Then
Return Visibility.Visible
Else
Return Visibility.Hidden
End If
Моя проблема заключается в том, что привязка DataContext.Id (значения (1) впреобразователь) всегда имеет значение MS.Internal.NamedObject.Не имеет значения, пытаюсь ли я связать напрямую с DataContext (Path = "DataContext" ElementName = "myRoot") или даже просто пытаюсь связать с открытым свойством (Path = "MyProperty" ElementName = "myRoot")Сам пользовательский элемент управления, значение ВСЕГДА MS.Internal.NamedObject.
Это проблема с DataGrid?Ошибка в MultiValueConverter?Или я здесь что-то не так делаю?
Любая помощь здесь будет с благодарностью!
Спасибо,
Дейв