Как связать команду кнопки «myCmdButton» с ParameterVariableList, как и «addBtn». «addBtn» работает, как и ожидалось. Я хочу, чтобы другая команда кнопки также принадлежала классу ParameterVariableList.Как связать команду с ее «TemplatedParent»
Вот XAML:
<DataTemplate DataType="{x:Type locale:ParameterVariableList}" >
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Description}"/>
<Button Content="add" Command="{Binding AddEntryCmd}" Name="addBtn" />
<ListBox ItemsSource="{Binding ItemList, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch" >
<ListBox.ItemTemplate>
<ItemContainerTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding}" />
<Button Width="{Binding ActualHeight, RelativeSource={RelativeSource Self}}" Command="{Binding RemoveEntryCmd, ???}" Name="myCmdButton" >
<Image Source="Resources/trash_16x16.png" Stretch="None" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Button>
</StackPanel>
</ItemContainerTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</DataTemplate>
Я ожидал, что это работает, но это не делает:
Command="{Binding RemoveEntryCmd, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type locale:ParameterVariableList}}}"
Ошибка: System.Windows.Data Ошибка: 4: Не удается найти источник для привязка со ссылкой 'RelativeSource FindAncestor, AncestorType =' hmi.ParameterVariableList ', AncestorLevel =' 1 ''. BindingExpression: Path = RemoveEntryCmd; DataItem = NULL; целевым элементом является «Button» (Name = ''); Целевое свойство является 'Command' (тип 'ICommand')
№ System.Windows.Data Ошибка: 40: Ошибка пути BindingExpression: свойство 'RemoveEntryCmd' не найдено в 'object' '' ListBox '(Name =' ')'. BindingExpression: Path = RemoveEntryCmd; DataItem = 'ListBox' (Name = ''); целевым элементом является «Button» (Name = ''); target свойство - «Command» (тип «ICommand») .. try AncestorType x: Тип locale: ParamaterVariableList тоже .. dont work .. – mxii
К сожалению. Тип предка должен быть родительским типом, используемым DataTemplate. Например, если родительский шаблон данных является datagrid, тогда Datagrid должен быть типом объекта. –
Родитель этого DataTemplate является ListView, но тот же Errormessage: System.Windows.Data Ошибка: 40: Ошибка пути BindingExpression: свойство 'RemoveEntryCmd' не найдено в 'object' '' ListView '(Name =' listview_settings ')'. BindingExpression: Path = RemoveEntryCmd; DataItem = 'ListView' (Name = 'listview_settings'); целевым элементом является «Button» (Name = ''); target свойство - «Command» (тип «ICommand»). Это даже нелогично для меня, потому что его НЕ является свойством этого ListView? – mxii