2015-05-29 85 views
0

代碼與操作屬性綁定在axml我可以綁定像這樣無特殊ValueConverter

local:MvxBind="Visibility Status==0, Converter=Visibility" 

,但是當我試圖做到這一點的代碼:

set.Bind(_imgStatus).For(c => c.Hidden).To(vm => vm.Status == 0).WithConversion("Visibility"); 

set.Bind(_imgStatus).For(c => c.Hidden).To(vm => vm.Status.Equals(0)).WithConversion("Visibility"); 

我收到錯誤 屬性表達式必須是'x => x.SomeProperty.SomeOtherProperty'或'x => x.SomeCollection [0] .Property'(System.ArgumentException)

我知道我可以編寫自己的ValueConverter,但我很感興趣,如果有一種方法可以超越,因爲顯然有一種方法寫在axml中。

回答

3

MvvmCross在流利語法中不包含像To(vm => vm.Status == 0)這樣的表達式。這部分是因爲它們很難編碼......部分原因是它們的編碼通常需要運行時編譯(iOS不允許)(0128)。像https://github.com/MvvmCross/NPlus1DaysOfMvvmCross/blob/master/N-35-Tibet/BindMe.Touch/Views/FirstView.cs#L63

所以你的樣品有可能成爲類似:

set.Bind(_imgStatus).For(c => c.Hidden).To("Visibility(Status == 0)"); 

,甚至(在這種情況下):

set.Bind(_imgStatus).For(c => c.Hidden).To("Status != 0"); 

也有一些described流利的方法,讓你傳遞整個綁定字符串 - 例如例如:

set.Bind(_imgStatus).FullyDescribed("Hidden Visibility(Status != 0)");