c# – (wpf)Application.Current.Resources vs FindResource
发布时间:2020-12-15 17:35:40 所属栏目:百科 来源:网络整理
导读:所以,我正在使用C#中的 WPF创建一个GUI.它看起来像这样: 它现在还没有完成.这两行是我尝试制作一种数据表,它们在XAML中是硬编码的. 现在,我正在C#中实现添加新的水果按钮功能. 我在XAML中有以下样式来控制行的背景图像应该是什么样子: Style x:Key="stretc
所以,我正在使用C#中的
WPF创建一个GUI.它看起来像这样:
它现在还没有完成.这两行是我尝试制作一种数据表,它们在XAML中是硬编码的. 现在,我正在C#中实现添加新的水果按钮功能. <Style x:Key="stretchImage" TargetType="{x:Type Image}"> <Setter Property="VerticalAlignment" Value="Stretch"/> <Setter Property="HorizontalAlignment" Value="Stretch"/> <Setter Property="Stretch" Value="Fill"/> </Style> 因此,在代码中,我为每列col0,col1和col2创建一个图像,如果我使用以下代码, col0.Style = (Style)Application.Current.Resources["stretchImage"]; col1.Style = (Style)Application.Current.Resources["stretchImage"]; col2.Style = (Style)Application.Current.Resources["stretchImage"]; 它添加了一个如下所示的新行: 如你所见,它不太正确…… 它似乎不尊重风格的“Stretch”属性. 但是,如果我改为将样式加载代码改为 col0.Style = (Style)FindResource("stretchImage"); col1.Style = (Style)FindResource("stretchImage"); col2.Style = (Style)FindResource("stretchImage"); 它工作得很漂亮: (同样,应用程序还没有完成,所以不要担心),但我的主要问题是:Application.Current.Resources []和FindResource()之间有什么区别?为什么一个似乎忽略了一些属性而另一个没有?如果可能的话,我可以如何使Application.Current.Resources []正常工作? 解决方法
可以在可视化树中的几乎任何元素上定义资源. FrameworkElement.FindResource()将在树上向上查找每个节点上的资源,并最终一直到应用程序. Application.Current.Resources []跳过所有这些并直接获取Application上的资源.您几乎总是希望使用FindResource(),因此您可以在各个点覆盖样式.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |