我正在尝试更改代码中的Image.Source
。
单击按钮时,Image.Source
在后面的代码中被修改,并且它应该是
在Windows中显示图像。不幸的是,它似乎不起作用。
谁能让我知道问题是什么?
谢谢。
以下是我的代码:
XML
:
`<Grid Margin="0,0,-234,0">
<Image Source="{Binding SourceName, Mode=TwoWay}"
Height="100" Width="100" Margin="201,69,661,151"/>
<Button Margin="201,215,644,39" Click="Button_Click">show image</Button>
</Grid>`
C#
部分:
private void Button_Click(object sender, RoutedEventArgs e)
{
Uri uri = new Uri(@"C:\localFTP\thisImage.jpg", UriKind.Absolute);
BitmapImage i = new BitmapImage();
i.BeginInit();
i.UriSource = uri;
i.EndInit();
SourceName = i;
}
private ImageSource _sourceName;
public ImageSource SourceName
{
get
{
return _sourceName;
}
set
{
_sourceName = value;
OnPropertyChanged("SourceName");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
答案 0 :(得分:1)
您似乎无法在任何地方设置绑定源。
因此,要么设置MainWindow的DataContext,例如在像
这样的构造函数中public MainWindow()
{
InitializeComponent();
DataContext = this;
}
或明确指定绑定源,例如通过设置其RelativeSource:
<Image Source="{Binding SourceName,
RelativeSource={RelativeSource AncestorType=Window}}"/>
作为注释,SourceName
似乎是ImageSource类型属性的奇怪名称。最好将其命名为Source
或ImageSource
。
值得注意的是,创建BitmapImage实际上需要的代码少于您在问题中显示的代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
var uri = new Uri(@"C:\localFTP\thisImage.jpg");
SourceName = new BitmapImage(uri);
}