Dab*_*rnl 5 .net data-binding wpf
我有以下XAML,它可以完成所有应做的事情,除了FontSize上的MultiBinding在检索用户时失败(我在转换器中设置断点时看到DependencyProperty.UnsetData)。如您所见,Users是IEnumerable<UserData>HierarchicalDataTemplate的DataContext的一部分。
我该如何引用?
<TreeView Name="AllGroups" ItemsSource="{Binding}" >
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type PrivateMessengerUI:GroupContainer}"
ItemsSource="{Binding Users}"
>
<Label Content="{Binding GroupName}"/>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type PrivateMessenger:UserData}">
<TextBlock Text="{Binding Username}"
ToolTip="{StaticResource UserDataGroupBox}"
Name="GroupedUser"
MouseDown="GroupedUser_MouseDown">
<TextBlock.FontSize>
<MultiBinding Converter="{StaticResource LargeWhenIAmSelected}">
<Binding ElementName="Root" Path="SelectedUser"/>
<Binding RelativeSource="???"
Path="DataContext.Users"/>
</MultiBinding>
</TextBlock.FontSize>
</TextBlock>
</DataTemplate>
</TreeView.Resources>
</TreeView>
Run Code Online (Sandbox Code Playgroud)
正确答案是:
<Binding RelativeSource="{RelativeSource FindAncestor,
AncestorType={x:Type TreeViewItem},
AncestorLevel=2}"
Path="DataContext.Users"/>
Run Code Online (Sandbox Code Playgroud)
祖先级别至关重要且具有欺骗性:如果忽略该级别,则假定级别为1,并且实际上指向DataTemplate的容器(也是无子级TreeViewItem!),而不是 HierarchicalDataTemplate的容器。
| 归档时间: |
|
| 查看次数: |
7930 次 |
| 最近记录: |