所以,我正在使用C#中的WPF创建一个GUI.它看起来像这样:

它现在还没有完成.这两行是我尝试制作一种数据表,它们在XAML中是硬编码的.
现在,我正在C#中实现添加新的水果按钮功能.我在XAML中有以下样式来控制行的背景图像应该是什么样子:
<Style x:Key="stretchImage" TargetType="{x:Type Image}">
<Setter Property="VerticalAlignment" Value="Stretch"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="Stretch" Value="Fill"/>
</Style>
Run Code Online (Sandbox Code Playgroud)
因此,在代码中,我为每列创建一个图像,col0,col1,和col2,如果我使用下面的代码,
col0.Style = (Style)Application.Current.Resources["stretchImage"];
col1.Style = (Style)Application.Current.Resources["stretchImage"];
col2.Style = (Style)Application.Current.Resources["stretchImage"];
Run Code Online (Sandbox Code Playgroud)
它添加了一个如下所示的新行:

正如你所看到的,它不太正确......而拉伸窗口会加剧问题:

它似乎不尊重风格的"Stretch"属性.
但是,如果我改为将样式加载代码改为
col0.Style = (Style)FindResource("stretchImage");
col1.Style = (Style)FindResource("stretchImage");
col2.Style = (Style)FindResource("stretchImage");
Run Code Online (Sandbox Code Playgroud)
它工作得很漂亮:

(同样,应用程序还没有完成,所以不要担心),但我的主要问题是:Application.Current.Resources[]和之间有什么区别FindResource()?为什么一个似乎忽略了一些属性而另一个没有?如果可能的话,我可以Application.Current.Resources[]如何正常工作?
小智 13
可以在可视化树中的几乎任何元素上定义资源.FrameworkElement.FindResource()将在树上向上查找每个节点上的资源,并最终一直到应用程序.Application.Current.Resources []跳过所有这些并直接获取Application上的资源.您几乎总是希望使用FindResource(),因此您可以在各个点覆盖样式.
| 归档时间: |
|
| 查看次数: |
19407 次 |
| 最近记录: |