У меня возникают некоторые проблемы при попытке привязать свойство UserControl в ItemTemplate с режимом FindAncestor.FindAncestor не работает для UserControl в ListView.ItemTemplate
У меня есть следующий код:
<Window x:Class="TestUserControlBinding.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:TestUserControlBinding"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<!--<Label Content="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType=ListViewItem}}" />-->
<local:MyUserControl Content="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType=ListViewItem}}" />
</DataTemplate>
</ListView.ItemTemplate>
<ListView.Items>
<system:String>First</system:String>
<system:String>Second</system:String>
<system:String>Third</system:String>
</ListView.Items>
</ListView>
</Grid>
</Window>
Закомментированный Ярлык линия работает нормально (она отображается Правда, если он выбран в ListView, и ложь в противном случае).
Проблема заключается с MyUserControl, который не делает отображает ничего и VS говорит:
System.Windows.Data Error: 40 : BindingExpression path error: 'Content' property not found on 'object' ''String' (HashCode=-1920739956)'. BindingExpression:Path=Content; DataItem='String' (HashCode=-1920739956); target element is 'Label' (Name=''); target property is 'Content' (type 'Object')
MyUserControl просто содержит ярлык, связанный с контентной собственности:
<Grid>
<Label Content="{Binding Content}" />
</Grid>
Кто-нибудь знает, почему UserControl ведет себя иначе, чем элемент управления Label? (или, по крайней мере, может помочь мне увидеть, что я, очевидно, отсутствует?)
спасибо. Мое дело было много сложнее, чем я описывал здесь, но ваш ответ привел меня к правильному решению. –