第一次使用MvvmCross Value轉換器。我創建了一個值轉換器來處理bool之間的數據操作?元素在我的視圖和我的視圖模型中的布爾屬性。爲什麼不調用MvvmCross Value Converter的ConvertBack方法?
而我在視圖的ViewDidLoad中將我的視圖元素綁定到視圖模型。
var set = this.CreateBindingSet<SettingsView, SettingsViewModel>();
set.Bind(wifiOnlyElement).For(View => View.BooleanValue).To(ViewModel => ViewModel.ConnectOnWifiOnly).WithConversion("NullableBoolean").TwoWay();
set.Apply();
注:我添加了.TwoWay()結合修改器set.Bind,思維模式可能必須明確指出,沒有任何變化。
當視圖出現時,調用NullableBooleanValueConverter的Convert方法。
但是,當視圖關閉時,不會調用相應的ConvertBack方法。
基於this question我懷疑我沒有綁定到正確的屬性。我創建綁定的屏幕控件是Xamarin對話框/元素類的後繼自定義UITableViewCell,此屏幕控件上的可空布爾值是公共的,這是在輕擊元素時存儲真/假值的位置。
BooleanValue是名爲CheckboxElement的Dialog/Element類上的公共屬性,它繼承自基礎Element類。
NSObject
|_ Element
|_ CheckboxElement
.BooleanValue
有一個在CheckboxElement被覆蓋的屬性調用選擇,當元素被竊聽改變BooleanValue中的價值。
public override void Selected(DialogViewController dvc, UITableView tableView, NSIndexPath indexPath)
{
BooleanValue = !BooleanValue;
...
}
所選內容由DialogViewController的RowSelected方法調用。
public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
{
Container.Selected(indexPath);
}
它調用DialogViewController的Selected方法(元素是CheckboxElement)。
public virtual void Selected(NSIndexPath indexPath)
{
var section = Root.Sections[indexPath.Section];
var element = section.Elements[indexPath.Row];
ActiveElement = element;
element.Selected(this, Root.TableView, indexPath);
}
看起來不像有什麼事,有沒有介入這。
讓我知道你是否需要更多信息。提前致謝。
你可以編輯問題來添加'BooleanValue'在視圖上的內容,以及當它發生變化時通知綁定的內容。例如它是一個複選框? – Stuart
@Stuart - 在內嵌上面添加了額外的BooleanValue信息。如果我需要詳細說明或發佈更多的代碼,請告訴我。 – billmaya