Tag: visual tree

WPF:在附加属性中,如何等到可视树正确加载?

我在WPF应用程序中有一个附加属性。 下面的代码在OnLoad事件中,但它不起作用,除非我添加一个hacky 500毫秒延迟。 有没有办法避免这种延迟,并检测可视树何时加载? private static void FrameworkElement_Loaded(object sender, RoutedEventArgs e) { // … snip… Window window = GetParentWindow(dependencyObject); // Without this delay, changing properties does nothing. Task task = Task.Run( async () => { { // Without this delay, changing properties does nothing. await Task.Delay(TimeSpan.FromMilliseconds(500)); Application.Current.Dispatcher.Invoke( () => { // Set False >> True […]

以编程方式将UserControl从ContentControl移动到另一个

在WPF应用程序中,我想将UserControl从ContentControl移动到代码中的另一个: myContentControl2.Content = myUserControl; 在这种情况下,我收到一个错误: 指定的元素已经是另一个元素的逻辑子元素。 首先断开它。 在ControlControl类描述中,我可以看到RemoveVisualChild方法 ,但是当我尝试在代码中使用它时,我得到一个Unknown方法错误 myContentControl1.RemoveVisualChild(myUserControl);//here I get an “Unknown method” error 我哪里错了? 如何将UserControl从ContentControl移动到代码隐藏中的另一个?

如何访问XAML DataTemplate Listview中的元素而不与其进行交互

我有一个C#Store应用程序并使用DataTemplate选择器来确定在绑定到Array的ListView控件中使用哪种类型的Template。 因为它是模板化的,所以我无法为每个ListView行分配动态x:名称。 我需要能够通过索引访问列表视图行并将它们的可见性设置为开或关。 我尝试过这样的东西,但是.ItemContainerGenerator .ContainerFromItem(item); 返回null ,每次都得到一个Nullableexception: 如何访问XAML DataTemplate中的控件? 经过一些研究后,似乎上述解决方案仅在我触摸或设置了SelectedItem时才有效。 看这里 为什么ItemContainerGenerator返回null? 我需要能够在页面加载(初始设置)和按钮单击上调用方法,并修改某些行可见性。

wpf强制构建可视化树

我有ItemsControl和Grid作为ItemsPanelTemplate 我在代码隐藏中使用此ItemControl创建了一些UserControl,然后我需要创建RowDefinitions和ColumnDefinitons。 我使用这种方法得到“网格”: private TChildItem FindVisualChild(DependencyObject obj) where TChildItem : DependencyObject { for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++) { var child = VisualTreeHelper.GetChild(obj, i); if (child != null && child is TChildItem) return (TChildItem)child; var childOfChild = FindVisualChild(child); if (childOfChild != null) return childOfChild; } return null; } 但是如果我在显示UserControl之前调用此方法它返回null,所以我无法找到访问“网格”,并且当UserControl出现时它显示不像我预期的那样。 我试图谷歌,但我发现的是假设VisualTree没有为ItemControl构建,直到它在表单上显示。 有什么建议? 谢谢,抱歉英文不好;)