我正在写一个益智游戏,玩家试图逃离房间,但我遇到了一个问题。我正在尝试更改一个名为" door"点击时。但它并没有改变并且给出了运行时错误。
未处理的类型' System.Windows.ResourceReferenceKeyNotFoundException'发生在PresentationFramework.dll
中
private void Rectangle_MouseDown(object sender, MouseButtonEventArgs e)
{
ImageBrush ib = new ImageBrush();
ib.ImageSource = (ImageSource)Resources["openImage"];
}
<Window.Resources>
<BitmapImage x:Key="openImage" UriSource="açık.png" />
<BitmapImage x:Key="closedImage" UriSource="Kapalı.png" />
</Window.Resources>
<Rectangle x:Name="door" HorizontalAlignment="Left" Height="230" Margin="211,10,0,0" VerticalAlignment="Top" Width="100" MouseDown="Rectangle_MouseDown">
<Rectangle.Stroke>
<ImageBrush Stretch="None"/>
</Rectangle.Stroke>
<Rectangle.Fill>
<ImageBrush ImageSource="{StaticResource closedImage}"/>
</Rectangle.Fill>
</Rectangle>
答案 0 :(得分:0)
您没有指定名为Closed.png
的资源,只是将该名称的图像文件分配给Image控件的ImageSource
属性。
你可能想要的是定义两个这样的BitmapImage资源:
<Window.Resources>
<BitmapImage x:Key="openImage" UriSource="Open.png" />
<BitmapImage x:Key="closedImage" UriSource="Closed.png" />
</Window.Resources>
并在像这样的XAML中使用它们
<ImageBrush ImageSource="{StaticResource closedImage}"/>
并在这样的代码中:
var fill = door.Fill as ImageBrush;
if (fill.ImageSource == (ImageSource)Resources["closedImage"])
{
fill.ImageSource = (ImageSource)Resources["openImage"];
}