0
我有一個文本菜單中的XAML定義,我修改代碼:WPF綁定到資源實例
ContextMenu EditContextMenu;
EditContextMenu = (ContextMenu)this.FindResource("EditContextMenu");
//Modify it here...
然後,我需要將其設置爲ContextMenu
所有的文本框,DatePickers等在XAML主題文件使用數據綁定。我試着將屬性添加到主窗口:
public ContextMenu sosEditContextMenu
{
get
{
return EditContextMenu;
}
}
......像這樣綁定它(如下因素是從主題文件與「FTWin
」是我的主窗口Name
其中sosEditContextMenu
財產被定義):
<Style TargetType="{x:Type TextBox}">
<Setter Property="ContextMenu" Value="{Binding Source=FTWin, Path=sosEditContextMenu}"/>
</Style>
...但它不起作用。我嘗試了各種各樣的東西,並且我得到關於資源沒有被發現或沒有發生的異常。
是我想要做的事情,如果是的話,我做錯了什麼? 我不知道setting the DataContext of an object could help,但通過代碼爲所有文本框設置它不是很好嗎?
由於改變它的代碼。我曾經做過類似的事情,並且出於某種特殊原因,我得到了ContextMenu的兩個不同實例,或者我得到了一個''{DependencyProperty.UnsetValue}'對於屬性'ContextMenu''異常來說不是有效的值。我開始認爲'FindResource()'有時會返回不同的實例。由於情況並非如此,我想在合併資源字典的方式或/和我改變主題的方式上一定會出現問題。 – NoOne
如果你在樣式上設置了x:Shared =「False」,FindResource會返回一個新的實例,任何周圍的人(也許試着強迫它爲true,看看它是否能解決你的問題)。 - 它不會出現在智能感知中,但它在那裏。 – Andy
非常感謝! :)我想我知道會出現什麼問題。 – NoOne