Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有动态布局转换的WPF工具提示样式_Wpf_Dynamic_Styles_Layouttransform - Fatal编程技术网

带有动态布局转换的WPF工具提示样式

带有动态布局转换的WPF工具提示样式,wpf,dynamic,styles,layouttransform,Wpf,Dynamic,Styles,Layouttransform,我有一个应用程序可以缩放它的UI,我想用它缩放工具提示。 我尝试过这样做: <Style TargetType="{x:Type ToolTip}"> <Setter Property="LayoutTransform" Value="{DynamicResource scaleTransf}"/> ... </Style> 与: EDIT3:我尝试使用DependencyProperty解决此问题: 在MainWindow.xaml.cs

我有一个应用程序可以缩放它的UI,我想用它缩放工具提示。 我尝试过这样做:

<Style TargetType="{x:Type ToolTip}">
    <Setter Property="LayoutTransform" Value="{DynamicResource scaleTransf}"/>
    ...
</Style>
与:


EDIT3:我尝试使用DependencyProperty解决此问题:

在MainWindow.xaml.cs中:

    public static readonly DependencyProperty TransformToApplyProperty = DependencyProperty.Register("TransformToApply", typeof(Transform), typeof(MainWindow));
    public Transform TransformToApply
    {
        get { return (Transform)this.GetValue(TransformToApplyProperty); }
    }
在主窗口的某个位置,响应用户输入:

this.SetValue(TransformToApplyProperty, new ScaleTransform(val, val));
XAML样式:

<Style TargetType="{x:Type ToolTip}">
    <Setter Property="LayoutTransform" Value="{Binding TransformToApply, Source={x:Reference WndXName}}"/>
...

...

使用这段代码,没有一个工具提示会相应地扩展。

我认为在您的情况下,资源不是最好的方法

在这种情况下,最好将变换声明为窗口的DependencyProperty:

public static readonly DependencyProperty TransformToApplyProperty = DependencyProperty.Register("TransformToApply", typeof(Transform), typeof(Window));
然后在XAML中:

<Window  .... (all the xmlns)
         x:Name="window"/>
    <AnyControl ScaleTransform="{Binding TransformToApply, ElementName=window}"/>
</Window>


尝试
Application.Current.Resources.Add(xxx)
。我刚刚尝试删除和重新添加资源,这是一样的。删除和重新添加是什么意思?这是动态的吗?发布XAML和代码。我的意思见EDIT2。你不需要。所有WPF类都映射到默认的xml名称空间。为每个控件设置它并不是一件很容易的事情(我认为我的第一个解决方案也会以这种方式工作)。假设我没有做错任何事,这是行不通的。请参阅上面的EDIT3。尝试使用
{Binding TransformToApply,Source={x:Reference window}}
这会给我一个异常:
未解析的引用“MainWindow”。
我尝试为MainWindow添加名称空间,但它仍然找不到它!{x:Reference}应该指向窗口的x:Name,而不是它的类,你是这样做的吗?不是。我现在已经更正了,但它仍然不起作用。它仍然找不到给定的x:名称。注意:我的样式在一个单独的XAML文件中,而不是在MainWindow.XAML中(我不知道这是否重要,也不知道如何在不移动它的情况下更正它。同样,我尝试过使用名称空间,但没有成功)。
<Style TargetType="{x:Type ToolTip}">
    <Setter Property="LayoutTransform" Value="{Binding TransformToApply, Source={x:Reference WndXName}}"/>
...
public static readonly DependencyProperty TransformToApplyProperty = DependencyProperty.Register("TransformToApply", typeof(Transform), typeof(Window));
<Window  .... (all the xmlns)
         x:Name="window"/>
    <AnyControl ScaleTransform="{Binding TransformToApply, ElementName=window}"/>
</Window>