Я создал пользовательский элемент управления, скажем UserControl1. У меня есть кнопка управления дочерним элементом, нажав на которую я хочу передать объект UserControl1 и данные, связанные с кнопкой в конвертер. Я использую шаблон MVVM для выполнения команды.Как получить объект родительского usecontrol в wpf
Допустит, файл Xaml для пользовательского элемента управления структурирован как ниже
<local:UserControl1 x:Class="UserControl1
xmlns:Converters="clr-namespace:MyConverter"
xmlns:......>
где-то в Xaml существует Listbox, содержащий ListItem и кнопку для ведения каких-либо действий на ListBox, как представлено ниже
<ListBox x:Name="SomeViewmodel" MinWidth="300" MaxWidth="300" Height ="Auto" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" >
<ListBox.ItemTemplate>
<DataTemplate>
<Grid x:Name="LayoutGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ActualHeight}" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding someproperty}" Grid.Column="0">
</TextBlock>
<Border
<Button x:Name="btn1" ">
<Image Source="someImage.png"/>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="Commands:MyCommand" >
<i:InvokeCommandAction.CommandParameter>
<MultiBinding Converter="{Converters:MyConverter}">
<Binding />
<Binding Source="{RelativeSource Mode=FindAncestor, AncestorType={x:Type local:UserControl1}}" />
</MultiBinding>
</i:InvokeCommandAction.CommandParameter>
</i:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</Border>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
Я могу отправить объект в конвертере, но объект в конвертере за полученный имеет тип System.Windows.Data.RelativeSource где должно быть UserControl1.
Что мне не хватает? или что мне делать, чтобы получить объект UserControl1 из RelativeSourceObject?
Это работает для меня. очень маленькое изменение, но у меня было много головокружения. –