【发布时间】:2013-01-11 03:34:28
【问题描述】:
我是 WPF 和 C# 的新手,我尝试实现以下功能,但经过多次尝试都失败了。谁能帮帮我?
我有一个图像控件:
<Image Grid.Row="1" x:Name="ImageEditor" Stretch="Fill" StretchDirection="Both"/>
我想将此图像控件的源绑定到另一个类的静态属性(ImageHandler)
class ImageHandler
{
public static BitmapImage ImageToDisplay { get; set; }
public ImageHandler(){}
.... //other codes
}
所以每当我在ImageHandler 类中做某事并更新ImageToDisplay 属性时,我的图像控件都会显示新图像。
我尝试了几种方法,但都没有达到这个目标。以下显示了我失败的尝试之一。
<Window.Resources>
<local:ImageHandler x:Key="ImageHandler"></local:ImageHandler>
</Window.Resources>
<Image Grid.Row="1" x:Name="ImageEditor" Stretch="Fill" StretchDirection="Both"
Source="{Binding Source={StaticResource ResourceKey=ImageHandler},
Path=ImageToDisplay,Mode=TwoWay}">
</Image>
【问题讨论】:
-
为什么属性必须是静态的?拥有一个非静态属性并访问 ImageHandler 资源对象以进行更新会更容易。
-
是的 static 属性的使用在这里不清楚。
-
我有一个CommandHandler类,它处理Open、Save、SaveAs等,下面的代码是我想要实现的:
-
public static void OpenCommandExecuted(object sender, ExecutedRoutedEventArgs e) { var openImage = new OpenFileDialog(); openImage.Title = "选择一张图片"; Nullable
结果 = openImage.ShowDialog(); if (result == true) { ImageHandler.ImageToDisplay = ImageHandler.LoadImage(openImage.FileName); } } -
没有静态属性,我不知道如何将新打开的图像保存到同一个 ImageToDisplay 属性。
标签: c# wpf image binding properties