Değişiklik yapmak için bir komutu çalıştırmak için android onay kutusunu bağlamak mümkün mü? Bir örnek bulunamadıMvvmCross Onay kutusu bağlamak için bağlamak android xml
cevap
Standart yaklaşım, basit görünümünüzdeki tip boole özelliğine bağlanmak ve mantığınızı bu özelliğin ayarlayıcısında gerçekleştirmek olacaktır. Sizin o zaman bu gibi görünecektir bağlayıcı:
local:MvxBind="Checked IsChecked; Click YourCommand;"
ViewModel:
local:MvxBind="Checked IsChecked"
Ancak eğer gerçekten Komutanlığı bağlamak gerekirse, ayrıca olay tıklayın bağlanabildiği
private bool _isChecked;
public bool IsChecked
{
get { return _isChecked; }
set
{
_isChecked = value;
RaisePropertyChanged(() => IsChecked);
}
}
public ICommand YourCommand
{
get
{
return new MvxCommand(() =>
{
var isChecked = IsChecked;
//Now you can use isChecked variable
});
}
}
Not o Komut parametrenizdeki onay kutusunun değerini almazsınız, böylelikle yine de boole özelliğine bağlamanız gerekir. Bu çözümle ilgili bir başka problem, bir gerçeğe güvenmeniz gerektiğidir, mülkünüzün belirleyicisi emrinizden önce çağrılır.
Eğer gerçekten bool parametresiyle bir komutunuz varsa, bunu kesinlikle yapabilirsiniz. MvvmCross çerçevesiyle ilgili müthiş şey, her zaman işlevselliğini artırabilmenizdir. Durumunuzda CheckBox için özel ciltleme uygulamanız gerekir. İyi bir başlangıç noktası burada olabilir: http://slodge.blogspot.cz/2013/06/n28-custom-bindings-n1-days-of-mvvmcross.html
Düzeltme: Ne kadar kolay olduğunu göstermek için bunu deneyin ve bool parametresiyle basit bir komut bağlaması uygulayın. (CanExecute kontrolü yok). Birinin ilgilenmesi durumunda, kod burada.
Cilt sınıfı: Setup.cs yılında
public class CheckBoxChangedBinding
: MvxAndroidTargetBinding
{
private ICommand _command;
protected CheckBox View
{
get { return (CheckBox) Target; }
}
public CheckBoxChangedBinding(CheckBox view)
: base(view)
{
view.CheckedChange += CheckBoxOnCheckedChange;
}
private void CheckBoxOnCheckedChange(object sender, CompoundButton.CheckedChangeEventArgs e)
{
if (_command == null)
return;
var checkBoxValue = e.IsChecked;
_command.Execute(checkBoxValue);
}
protected override void SetValueImpl(object target, object value)
{
_command = value as ICommand;
}
public override MvxBindingMode DefaultMode
{
get { return MvxBindingMode.OneWay; }
}
public override Type TargetType
{
get { return typeof (ICommand); }
}
protected override void Dispose(bool isDisposing)
{
if (isDisposing)
{
var view = View;
if (view != null)
{
view.CheckedChange -= CheckBoxOnCheckedChange;
}
}
base.Dispose(isDisposing);
}
}
: En düzende
protected override void FillTargetFactories(IMvxTargetBindingFactoryRegistry registry)
{
base.FillTargetFactories(registry);
registry.RegisterCustomBindingFactory<CheckBox>("CheckedChanged",
checkBox => new CheckBoxChangedBinding(checkBox));
}
:
<CheckBox
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
local:MvxBind="CheckedChanged CheckBoxCheckedCommand" />
Ve nihayet ViewModel:
public ICommand CheckBoxCheckedCommand
{
get
{
return new MvxCommand<bool>(isChecked =>
{
var parameter = isChecked;
});
}
}
- 1. bağlamak
- 2. wpf bağlamak
- 3. iTunes Bağlamak Bağlamak Birden çok dil için ekran görüntüsü yükleme
- 4. kaynakları yeniden bağlamak?
- 5. Android ADB boş ana makine adı bağlamak
- 6. 'veriler' bağlamak Can not
- 7. Kitaplığı Düzgün Olarak Bağlamak
- 8. Kancayı bağlamak ya da kancalamamak için - git
- 9. WebApi Filtresi Nitelikleri Bağlamak için Ninject Kullanma
- 10. , hover'i bağlamak için .bind() öğesini kullanamazsınız
- 11. Hepsini bağlamak için tek bir REPL?
- 12. Firebase hesabımı GitHub'a bağlamak istiyorum
- 13. UIPkorkntrolünü UIScrollView'e Programsal Olarak Bağlamak
- 14. Meteor Bağlantı hatası (ETIMEDOUT bağlamak)
- 15. Bir Etkinliği Silverlight DataTemplate'de bağlamak mümkün mü?
- 16. Android listesi ve onay kutusu
- 17. Android telefonu bluetooth ile yazıcıya bağlamak mümkün mü?
- 18. Mvvmcross
- 19. Ubuntu'da OpenCV'yi Derlemek ve Bağlamak 12.04
- 20. Bir X11 sunucusunu iPhone'a bağlamak mümkün mü?
- 21. iTunes bağlamak - kullanıcılarını eklenemiyor - davet e-postası
- 22. ben böyle bir giriş elemanı bağlamak çalışıyorum
- 23. Açısal yönerge: ebeveyn kapsamında değişkene bağlamak
- 24. JQuery bağlamak biz Ajax Başarısına bağlama dememizin
- 25. Seçili kişileri nasıl alabilirim? Onay kutusu (Android)
- 26. MvvmCross Android ViewStub
- 27. Bir sınıf üyesi işlevini bağlamak için boost :: bind'i nasıl kullanabilirim?
- 28. Blob alanını TImage kontrolüne bağlamak için canlı ciltleme nasıl kullanılır?
- 29. BaasBox verilerini MapBox sunum katmanına bağlamak için ne eksik?
- 30. gcc: matematik kütüphanesini bağlamak için neden -lm bayrağı gerekiyor?