> </Style> I modified the ContentPresenter in the following way in order to test out using the "FindAncestor <Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=<em>FindAncestor</em> </DataTrigger> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor <Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=<em>FindAncestor</em> > <Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor
Horizontal"> <CheckBox IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource <em>FindAncestor</em> AncestorType={x:Type ListViewItem}}}"/> </StackPanel> </DataTemplate> 就是在控件模板中添加一个CheckBox并且这个CheckBox通过FindAncestor SelectionMode显示或隐藏SelectionCheckMark: <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=<em>FindAncestor</em> Value="Collapsed" /> </DataTrigger> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=<em>FindAncestor</em> Binding IsSelected, Mode=TwoWay, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}, Mode=<em>FindAncestor</em>
(hash=8340425) System.Windows.Data Warning: 66 : BindingExpression (hash=62509834): RelativeSource (FindAncestor hash=48957711) System.Windows.Data Warning: 66 : BindingExpression (hash=28525238): RelativeSource (FindAncestor hash=34359256) System.Windows.Data Warning: 66 : BindingExpression (hash=12405375): RelativeSource (FindAncestor hash=64356400) System.Windows.Data Warning: 66 : BindingExpression (hash=60482217): RelativeSource (FindAncestor (hash=59325057) System.Windows.Data Warning: 66 : BindingExpression (hash=294043): RelativeSource (FindAncestor
set; } //... } 接着我参考了WPF中是怎样获取父ViewModel当中的数据: Binding="{Binding RelativeSource={RelativeSource FindAncestor , AncestorType={x:Type Window}}, Path=DataContext.ParentViewModelProperty} 可以看到通过 FindAncestor 方法,去指定
Self FindAncestor TemplatedParent PreviousData 让我们一个一个详细地探讨一下。 2.1 Self Self用于绑定源和绑定目标相同的场景中。 2.2 FindAncestor 顾名思义,当绑定源是绑定目标的祖先(父级)之一时使用此选项。使用FindAncestor扩展,可以找到任何级别的祖先。 让我们举个例子来更清楚地理解它。 Button></Button> </StackPanel> </Border> </StackPanel> </Grid> 现在,让我们使用FindAncestor ="Vertical"> <Button Height="50" Content="{Binding RelativeSource={RelativeSource <em>FindAncestor</em>
{ AncestorType = typeof(Window), Mode = RelativeSourceMode.FindAncestor { AncestorType = typeof(Window), Mode = RelativeSourceMode.FindAncestor 但是此时发现RelativeSource (FindAncestor) requires tree context,我们在查找RelativeSource 时,需要有上下文树,而此时条件不满足,我们的绑定就被延迟了
Self FindAncestor TemplatedParent PreviousData 让我们一个一个详细地探讨一下。 2.1 Self Self用于绑定源和绑定目标相同的场景中。 2.2 FindAncestor 顾名思义,当绑定源是绑定目标的祖先(父级)之一时使用此选项。使用FindAncestor扩展,可以找到任何级别的祖先。 让我们举个例子来更清楚地理解它。 Button></Button> </StackPanel> </Border> </StackPanel> </Grid> 现在,让我们使用FindAncestor ="Vertical"> <Button Height="50" Content="{Binding RelativeSource={RelativeSource <em>FindAncestor</em>
Path="HorizontalContentAlignment" RelativeSource="{RelativeSource Mode=FindAncestor Path="VerticalContentAlignment" RelativeSource="{RelativeSource Mode=FindAncestor
0,0,0,0" Stretch="Uniform" Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor
Command="{Binding WinLoadedCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor "{Binding IconMouseLeftDownCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor "{Binding IconMouseLeftDownCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor
" Fill="#ffffff" Margin="1,3,0,0" /> </Grid> </Border> 然后在Trigger中通过FindAncestor MultiDataTrigger.Conditions> <Condition Binding="{Binding RelativeSource={RelativeSource Mode=<em>FindAncestor</em> Value="True" /> <Condition Binding="{Binding RelativeSource={RelativeSource Mode=<em>FindAncestor</em>
ItemsControlNoDataConverter/> </MultiBinding.Converter> <Binding Path="Data" RelativeSource="{RelativeSource <em>FindAncestor</em> AncestorType={x:Type oea:GridTreeView}}"/> <Binding Path="Items.Count" RelativeSource="{RelativeSource <em>FindAncestor</em>
<Condition Binding="{Binding RelativeSource={RelativeSource Mode=<em>FindAncestor</em> <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor
cellTemp.Append(" >"); cellTemp.Append("<Grid Width=\"{Binding RelativeSource={RelativeSource Mode=FindAncestor
<Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource <em>FindAncestor</em> <Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor
EventToCommand Command="{Binding LoadedCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor CloseWinCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor
然后以相对路径来为TextBox进行绑定 RelativeSource relative = new RelativeSource(RelativeSourceMode.FindAncestor); FindAncestor:引用数据绑定元素的父链中的上级。 可用于绑定到特定类型的上级或其子类 在这里设置为了FindAncestor.
"textBox1" FontSize="24" Margin="10" Text="{Binding RelativeSource={RelativeSource FindAncestor </DockPanel> </Grid> //TextBox 绑定 等效代码 RelativeSource rs = new RelativeSource(RelativeSourceMode.FindAncestor //显示d1 Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Dockpanel},AncestorLevel
Key="Return" Command="{Binding Path=DataContext.PressEnterKey, RelativeSource={RelativeSource Mode=FindAncestor Button Content="删除" Command="{Binding Path=DataContext.DelClick, RelativeSource={RelativeSource Mode=FindAncestor
Setter Property="ItemsSource" Value="{Binding DataContext.DeptList,RelativeSource={RelativeSource Mode=FindAncestor Setter Property="ItemsSource" Value="{Binding DataContext.DeptList,RelativeSource={RelativeSource Mode=FindAncestor