1) Do not call Play()
from the view model. Raise an event in the view model instead (for instance PlayRequested
) and listen to this event in the view:
view model:
public event EventHandler PlayRequested;
...
if (this.PlayRequested != null)
{
this.PlayRequested(this, EventArgs.Empty);
}
view:
ViewModel vm = new ViewModel();
this.DataContext = vm;
vm.PlayRequested += (sender, e) =>
{
this.myMediaElement.Play();
};
2) You can expose in the view model a public boolean property, and bind the Visibility
property of your controls to this property. As Visibility
is of type Visibility
and not bool
, you'll have to use a converter.
You can find a basic implementation of such a converter here.
This related question might help you too.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…