WPF MenuItem behavior MVVM

复制代码
//xaml 
<Image Grid.Column="1" ClipToBounds="True"  
        Source="{Binding SelectedItem.ImgUrl,ElementName=lbx}">
     <Image.ContextMenu>
         <ContextMenu> 
             <MenuItem  Header="Save As Picture">
                 <behavior:Interaction.Triggers>
                     <behavior:EventTrigger EventName="Click">
                         <behavior:CallMethodAction TargetObject="{Binding}" MethodName="SaveAsImageClick"/>
                     </behavior:EventTrigger>
                 </behavior:Interaction.Triggers>
             </MenuItem> 
             <MenuItem Header="Save As String">
                 <behavior:Interaction.Triggers>
                     <behavior:EventTrigger EventName="Click">
                         <behavior:CallMethodAction TargetObject="{Binding}" MethodName="SaveAsStringClick"/>
                     </behavior:EventTrigger>
                 </behavior:Interaction.Triggers>
             </MenuItem>
         </ContextMenu>
     </Image.ContextMenu>


//cs
public void SaveAsImageClick(object sender,EventArgs e)
{
    SaveFileDialog sfd = new SaveFileDialog();
    sfd.Filter = "Image Files|*.jpg;*.png;|All Files|*.*";
    if (sfd.ShowDialog() == true && SelectedBook != null)
    {
       using(FileStream fs=new FileStream(sfd.FileName,FileMode.OpenOrCreate))
        {
            var bytes = File.ReadAllBytes(SelectedBook.ImgUrl);
            fs.Write(bytes,0,bytes.Count());
        }
    }
}

public void SaveAsStringClick(object sender,EventArgs e)
{ 
    SaveFileDialog sfd = new SaveFileDialog();
    sfd.Filter = "Text Files|*.txt*|All Files|*.*";
    if(sfd.ShowDialog()==true && SelectedBook!=null)
    {
        var imgUrl = System.IO.Path.GetFullPath(SelectedBook.ImgUrl);
        string str = ConvertImgToString(imgUrl);
        File.WriteAllText(sfd.FileName, str);
    } 
}

private string ConvertImgToString(string imgFullUrl)
{ 
    if(File.Exists(imgFullUrl))
    {
        byte[] bytes = File.ReadAllBytes(imgFullUrl);
        string base64Str = Convert.ToBase64String(bytes);
        return base64Str;
    }
    return string.Empty;
} 
复制代码

 

posted @   FredGrit  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2022-07-06 C++ quick sort
点击右上角即可分享
微信分享提示