Witam, od niedawna uczę się tworzyć aplikacje .Net zgodnie z modelem MVVM. No i chciałem zrobić sobie prostego painta. Chciałem wstawić kilka buttonów i w zależności który zostanie kliknięty przypisać odpowiednią wartość dla pola EditingModes w InkCanvas. No więc chciałem zrobić metodę Setter() która by zwracała odpowiednią wartość w zależności od tego jaki button został wciśnięty. I tu właśnie mam problem bo nie wiem jak sprawdzać te buttony. Sam kod XAML wygląda następująco:
<Window x:Class="wpf_podstaw5.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:wpf_podstaw5"
xmlns:vm="clr-namespace:wpf_podstaw5"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<vm:InkEditingModes />
</Window.DataContext>
<Window.Resources>
<!--<local:InkEditingModes x:Key="editingModes" /> -->
<!-- InkEditingModes editingModes=new InkEditingModes();-->
<local:Konwerter x:Key="WhichOption" />
</Window.Resources>
<DockPanel>
<Border
BorderBrush="Chocolate"
BorderThickness="3"
>
<StackPanel Width="80">
<Button x:Name="Drawing" Content="Draw" />
<Button x:Name="Selecting" Content="Select" />
<Button x:Name="Reset" Content="Reset" />
</StackPanel>
</Border>
<InkCanvas EditingMode="{Binding EditingMode}" >
</InkCanvas>
</DockPanel>
</Window>
,,ViewModel" :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Input;
using wpf_podstaw5.ModelWidoku;
namespace wpf_podstaw5
{
class InkEditingModes : INotifyPropertyChanged
{
private InkCanvasEditingMode _EditingMode;
public InkCanvasEditingMode EditingMode
{
get
{
return _EditingMode;
}
set
{
_EditingMode = Setter();
raiseEventThatPropertyChanged();
}
}
//Konstruktor //
public InkEditingModes()
{
_EditingMode = InkCanvasEditingMode.Ink;
raiseEventThatPropertyChanged();
}
// Metody //
public event PropertyChangedEventHandler PropertyChanged;
public void raiseEventThatPropertyChanged()
{
if (PropertyChanged!=null)
PropertyChanged(this, new PropertyChangedEventArgs("EditingMode"));
}
public InkCanvasEditingMode Setter()
{
return InkCanvasEditingMode.Select;
}
}
}
Myślałem też żeby napisać jakiś konwerter tylko że nie wiem za bardzo jakby odnieść się do nazwy buttonów i jak to value z konwertera przypisywać do w moim przypadku _EditingMode.
Prosiłbym o pomoc, czego najlepiej tutaj użyć?