更改按钮的内容将删除样式WPF
本文关键字:删除 样式 WPF 按钮 | 更新日期: 2023-09-27 18:04:55
更改按钮的内容图像将使其忽略任何先前定义的布局属性。
我怀疑的是,在Button click事件中更改this.Content
时,它修改了:
<Button>
Everything found between these tags.
</Button>
由于我的Style在这些标签中,它会覆盖它。
下面是记录的代码:
private void ChangeImageFile(object sender, RoutedEventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Image Files|*.png;*.jpeg;*.tiff;*.gif;*.bmp;*.jpg";
ofd.FilterIndex = 1;
ofd.Multiselect = false;
bool? ok = ofd.ShowDialog();
if(ok == true)
{
Image loaded = new Image();
loaded.Source = new BitmapImage(new Uri(ofd.FileName));
loaded.Height = 100;
this.Content = loaded;
}
}
<Button x:Name="BookCover" Click="ChangeImageFile">
<Button.Content>
<Image Source="Images/NewBook.png"/>
</Button.Content>
<Button.Style>
<Style TargetType="{x:Type Button}">
... LONG STYLE ...
</Style>
</Button.Style>
</Button>
当您使用this.Content
时,这指的是当前窗口而不是按钮。您要么需要通过Name访问按钮,要么强制转换发送者。
BookCover.Content = loaded;
强制转换发送方:
Button btn = (sender as Button);
if(btn != null)
btn.Content = loaded;