J'ai une classe d'entités dans une classe de bibliothèque C# et lié à la bibliothèque de classe Silverlight (entités doit être en classe C# en raison de compatiblité existant avec d'autres systèmes)MVVM propriété avec une classe complexe liée et CanExecute relais de commande ne fonctionne pas
Exemple (bibliothèque C#):
public class TestClass
{
private string _testValue;
public string TestValue
{
get { return _testValue; }
set
{
if (_testValue!= value)
{
_testValue = value;
OnPropertyChanged("TestValue");
}
}
}}
Cette classe est liée à la bibliothèque de classe Silverlight.
Sur un MVVM il y a une propriété
private TestClass _testProp = new TestClass();
public TestClass TestProp
{
get
{
return _testProp ;
}
set
{
if (value != _testProp)
{
_testProp = value;
RaisePropertyChanged("TestProp");
PressCommand.CanExecuteChanged();
}
}
}
La propriété est binded à un contrôle en XAML
<TextBox Text="{Binding TestProp.TestValue, Mode=TwoWay}">
<Button Content="Press" Command="{Binding PressCommand}" />
Je veux contrôler le bouton avec RelayCommands CanExecute dépendait de la TestValue dans TestClass. ..
PressCommand = new RelayCommand(() =>
{
DoSomething();
},() => TestProp.TestValue != string.empty);
Cependant, si le TestValue est modifié (chaîne différente puis vide), Pres sCommand CanExecute doen't semblent remarquer le changement et n'est pas activé, le rendant inutilisable ...
Est-il possible d'utiliser le CanExecute avec ce genre de set-tu
Merci! Votre soultion/walkaround fonctionne très bien! BTW le GalaSoft MVVM est RaiseCanexecuteChanged(), pas CanExecuteChanged() mon mauvais, désolé pour quiconque lisant ... – KolarJ
Il ya un problème avec cette solution. Cela ne fonctionne pas avec le contrôle NumericUpDown de Silverlight Toolkit ... Il semble que la valeur du contrôle NumericUpDown soit mise à jour après la "prise". – KolarJ
@KolarJ Posez peut-être une autre question sur NumericUpDown car je n'ai pas joué avec autant – aqwert