这是我想要将FrameworkElement附加到新窗口以将其发布到PNG文件时的错误.
所以我的想法是删除父子链接,调用我的方法,并使用以下代码再次添加子代:
this.RemoveLogicalChild(element);
PublishFrameworkElement(element, stream);
this.AddLogicalChild(element);
Run Code Online (Sandbox Code Playgroud)
但我得到了完全相同的错误......
我在这里看了很多关于这个错误的问题,但没有回答我的问题我错过了什么?
编辑:这是适合我的代码:
var element = _GeneratedContent as FrameworkElement;
var ParentPanelCollection = (element.Parent as Panel).Children as UIElementCollection;
ParentPanelCollection.Clear();
FileStream stream = [...]
if (element != null)
{
PublishFrameworkElement(element, stream);
ParentPanelCollection.Add(element);
}
stream.Close();
Run Code Online (Sandbox Code Playgroud) 如何以编程方式获取WPF FrameworkElement的当前可视状态?从状态我的意思是"正常","鼠标","禁用"等状态.
编辑:基本上,我正在改变按钮的视觉状态VisualStateManager.GoToState(e, "MouseOver", true);,我想知道在完成后将状态更改为什么状态.
我何时从衍生物中获取UIElement并FrameworkElement考虑FrameworkElement继承UIElement.谁能举出现实生活中的例子?
我有一个包含几个文本块的画布,我需要找到我在xaml中分配的顶部左角点.我怎样才能获得这两个属性?当我遍历画布上的框架元素时,我似乎无法找到列出的属性.
试图让OnMouse事件出现在孩子身上FrameworkElement.父元素是Panel(并且Background属性不是Null).
class MyFrameworkElement : FrameworkElement
{
protected override void OnMouseDown(MouseButtonEventArgs e)
{
// Trying to get here!
base.OnMouseDown(e);
}
}
public class MyPanel : Panel
{
protected override void OnMouseDown(MouseButtonEventArgs e)
{
// This is OK
base.OnMouseDown(e);
}
}
Run Code Online (Sandbox Code Playgroud)
OnMouse永远不会被调用,事件总是未被处理,Snoop告诉我,路由事件似乎只能到达Panel元素.
<Window
x:Class="WpfApplication5.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:l="clr-namespace:WpfApplication5"
Title="Window1" Height="300" Width="300">
<Border x:Name="myBorder" Background="Red">
<l:MyPanel x:Name="myPanel" Background="Transparent">
<l:MyFrameworkElement x:Name="myFE"/>
</l:MyPanel>
</Border>
</Window>
Run Code Online (Sandbox Code Playgroud)
文档说FrameworkElement处理输入,但为什么不在这种情况下?
你好WPF专业人士至少我希望你们有些人读到这个!
DataContext是FrameworkElement(所有WPF控件的基类)上的属性,并作为DependencyProperty实现.这意味着逻辑树中的所有后代元素共享相同的DataContext.
所以ContentControl应该用它的后代元素做对吗?
我的情况并非如此,我想知道这种不当行为的原因是什么?!
你更了解它,请阅读这个线程(不要在这里复制一切)麻烦开始...:
WPF:找不到触发器目标'cc'.目标必须出现在任何Setters,Triggers之前
并说,它在很短的话:在ContentControl中内我的DataTemplates确实有死的DataContext,这意味着没有什么绑定到它,究竟是不可能的...
ContentControl中的每个元素都在DataContext属性中设置了NOTHING ???
我的一个数据源生成一组值,这些值键入以下接口
public interface IData
{
string Name { get; }
FrameworkElement VisualElement { get; }
}
Run Code Online (Sandbox Code Playgroud)
我想在WPF中使用数据绑定来显示IData实例的集合,TabControl其中Name值成为选项卡的标题,VisualElement值显示为相应选项卡的内容.
绑定标题是直截了当的.我对如何定义一个允许我显示VisualElement值的模板感到困惑.我尝试了很多解决方案但收效甚微.我最好的尝试如下.
<TabControl ItemsSource="{Binding}">
<TabControl.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Name}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
How do I display VisualElement here?
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
Run Code Online (Sandbox Code Playgroud)
我仍然是WPF的新手,所以我可能会错过这里显而易见的.
我试图在构造函数中设置页面的Name属性:
public partial class PageListView : Page
{
public PageListView(string title)
{
InitializeComponent();
Name = title;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我经常收到以下错误消息.
'x' is not a valid value for property 'Name'.
Run Code Online (Sandbox Code Playgroud)
凡x似乎是几乎所有的东西,向下钻取到异常的详细信息似乎并没有提供任何有用的信息(如的InnerException为空).
有谁知道这里发生了什么?
我正在尝试将控件从一个父母移动到另一个父母(如果这样可行,我不太确定).我可以掌握我想要移动的控件.这是我的代码:
public void MoveElement(UIElement uiElement)
{
var element = ((FrameworkElement)uiElement).Parent;
//TODO:Remove from parent
myControl.Children.Add(uiElement);
}
Run Code Online (Sandbox Code Playgroud)
当我点击最后一个语句时,抛出ArgumentException,指出"指定的Visual已经是另一个Visual的子项或CompositionTarget的根".奇怪的是,Parent返回null.如何找到父母?这甚至会起作用吗?
编辑:我不认为实际移动元素是我的问题的答案.我正在使用Visual Studio SDK,并且能够掌握UIElement组成编辑器窗格(扩展DockPanel)的内容.我试图将控件从标准编辑器移动到我正在开发的自定义工具窗口中.
这被证明是一个黑客,我意识到我需要同一控件的多个实例,所以我认为一个更复杂的解决方案(而不是一个黑客)存储.
我不清楚你何时会使用a UIElement而不是a FrameworkElement,为什么会有一个FrameworkElement类.从本质上讲,FrameworkElement提供的额外功能是什么,而不是UIElement?
frameworkelement ×10
wpf ×10
uielement ×3
c# ×2
.net ×1
binding ×1
canvas ×1
data-binding ×1
datacontext ×1
inheritance ×1
mouseevent ×1
properties ×1
routedevent ×1
silverlight ×1
string ×1