我有一個擴展它的UI的應用程序,我想用它縮放工具提示。 我也試着這樣做:帶動態佈局轉換的WPF工具提示樣式
<Style TargetType="{x:Type ToolTip}">
<Setter Property="LayoutTransform" Value="{DynamicResource scaleTransf}"/>
...
</Style>
...其中scaleTransf
是,我通過代碼更改資源:
Application.Current.Resources["scaleTransf"] = new ScaleTransform(...);
有:
<ScaleTransform x:Key="scaleTransf" ScaleX="1" ScaleY="1"/>
大部分的工具提示做得到縮放的大小,但其中一些由C#代碼創建的不會縮放。我檢查過了,似乎我沒有通過代碼設置他們的Style或LayoutTransform,所以我並不真正明白髮生了什麼問題......此外,我的印象是上述XAML代碼在幾天內運行良好前。 :(
有沒有......我可以做,使這所有的工作時間沒有設置在代碼隱藏LayoutTransform
編輯:在不改變規模的工具提示是已經成爲了那些前可見
EDIT1:。如果我在代碼中設置每個ToolTip
實例的LayoutTransform
到scaleTransf
背後使用SetResourceReference()
一切工作正常,我不明白爲什麼當它應該做的正是樣式不起作用每相同10被創建...基於我對WPF有限的知識,我會稱這是一個BUG!
EDIT2:
我也試過這樣:
Application.Current.Resources.Remove("scaleTransf");
Application.Current.Resources.Add("scaleTransf", new ScaleTransform(val, val));
EDIT3:我嘗試這種使用的DependencyProperty來解決:
在主窗口.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}}"/>
...
使用該代碼,而不是工具提示中的單個似乎相應地擴大。
嘗試'Application.Current.Resources.Add(XXX )'而不是。 –
我剛剛嘗試刪除並重新添加資源,這是同樣的事情。 – NoOne
通過刪除和重新添加,同儕意味着什麼?這是動態的嗎?發佈XAML和代碼。 –