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 @ 2024-07-06 20:29  FredGrit  阅读(3)  评论(0编辑  收藏  举报