与父属性WPF绑定
本文关键字:绑定 WPF 属性 | 更新日期: 2023-09-27 18:07:40
这是我的代码:(解释我的问题后)
<TreeView x:Name="playlist" Grid.Row="1" ItemsSource="{Binding Playlist}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding file}">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="Names" Text="{Binding Name}" Margin="0,0,10,0"/>
<Button Content="add" Command="{Binding Path=DataContext.Add_file, ElementName=playlist}"
CommandParameter="{Binding ElementName=Names, Path=Text}">
</Button>
</StackPanel>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<TextBlock x:Name="File_name" Text="{Binding}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonUp">
<i:InvokeCommandAction Command="{Binding Path=DataContext.Current_playlist, ElementName=playlist}"
CommandParameter="{Binding ElementName=Name,Path=Text}">
</i:InvokeCommandAction>
</i:EventTrigger>
<i:EventTrigger EventName="MouseLeftButtonUp">
<i:InvokeCommandAction Command="{Binding Path=DataContext.Lecture, ElementName=playlist}"
CommandParameter="{Binding ElementName=File_name,Path=Text}"></i:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBlock>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
好的,所以我的第一个事件触发器不工作。我试图发送我的文本块名为"Name"(就在上面)的值。但是他没有找到这个名字。所以他给了我一个空值。
我知道问题是由木材引起的<TextBlock x:Name="File_name" Text="{Binding}">
我正在改变我的数据上下文,所以我想在父数据上下文中获得名为"Name"的文本块的属性"Text"。
与其在绑定中使用ElementName
,不如使用ReleativeSource
?使用FindAncestor
获得TreeView
并绑定到它的DataContext
上的值。
Command="{Binding Path=DataContext.Current_playlist, ElementName=playlist}"
是
Command="{Binding Path=DataContext.Current_playlist, RelativeSource={RelativeSource FindAncestor, AncestorType=TreeView}}"