【发布时间】:2009-08-05 11:06:47
【问题描述】:
我是 WPF 的新手,所以请多多包涵。
基本上我已经在 WPF UserControl 中定义了一个 Style 来显示带有图像的按钮,如下所示:
<UserControl.Resources>
<Style TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
<Image Width="16" Height="16" Stretch="UniformToFill"/>
<ContentPresenter/>
</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
然后我在运行时将大量按钮添加到网格中(它必须在运行时,因为按钮的数量和类型是动态的)。
我想做的也是在运行时设置按钮的图像。我尝试了很多方法,但似乎都没有。在 Xaml 中设置源可以正常工作。我正在尝试的代码如下:
Button b = new Button();
// Create source.
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.UriSource = new Uri(@"C:\SourceCode\DSA\DSALibrary\Icons\money.png");
bi.EndInit();
b.SetValue(Image.SourceProperty, bi);
谁能指出我哪里出错了,如果我猜的话,我会说我认为我在设置值的地方,我实际上不是。
干杯
【问题讨论】:
-
'b' 是什么类型?您的 UserControl 派生按钮?
-
问题是 Button 不是 Image.. 而且您正试图在 b.. 上设置一个奇怪的属性(用于按钮)。您可以在按钮的内容上设置位图并使用数据模板(看答案)
-
已编辑以显示 B. @Arcturus,我认为这可能是问题所在,我只是不确定如何设置它,如果数据模板是要走的路,非常感谢.