안녕하세요. 로컬 속성에 MvxTableViewCell 액세서리 Checkmark를 바인딩하는 데 문제가 있습니다. 나는 IOS 아주 새로운 그리고 난 어떤 바보 같은 실수MvvMCross UITableView UITableViewCellAccessory.CheckMark에 로컬 속성 바인딩
public partial class TaxaListCellView : MvxTableViewCell
{
public static readonly UINib Nib = UINib.FromName ("TaxaListCellView", NSBundle.MainBundle);
public static readonly NSString Key = new NSString ("TaxaListCellView");
public TaxaListCellView (IntPtr handle) : base (handle)
{
Accessory = UITableViewCellAccessory.Checkmark;
SelectionStyle = UITableViewCellSelectionStyle.None;
this.DelayBind (() => {
var set = this.CreateBindingSet<TaxaListCellView, TaxonViewModel>();
set.Bind(lblSelectedTaxon).To(s => s.Name);
//I've been playing around with both ways below, and a few different
//variants without any success
//set.Bind("IsChecked").To(s => s.IsSelected).TwoWay();
//set.Bind(@"'IsChecked':{'Path':'IsSelected'");
set.Apply();
});
}
public bool IsChecked
{
get { return Accessory == UITableViewCellAccessory.Checkmark; }
set { Accessory = value ? UITableViewCellAccessory.Checkmark : UITableViewCellAccessory.None; }
}
public static TaxaListCellView Create()
{
return (TaxaListCellView)Nib.Instantiate (null, null) [0];
}
public override void SetSelected (bool selected, bool animated)
{
Accessory = selected ? UITableViewCellAccessory.Checkmark : UITableViewCellAccessory.None;
base.SetSelected (selected, animated);
}
}
을 변경 한 경우 MvvmCross 심지어 새로운 그래서 난 사과 난 잘 모르겠어요 Bind MvxBindableTableViewCell's Accessory to boolean
에서 발견 예를 들어 다음과 같은 시도했다 거기에 내 MvxTableViewController 잘못 아무것도하지만, 여기에 내가 내가 검색을 시작 먼저 목록에서 항목을 선택하면 코드
public class TaxaListView : MvxTableViewController
{
public TaxaListView()
{
Title = "Taxon List";
}
private UISearchBar _searchBar;
public override void ViewDidLoad()
{
base.ViewDidLoad();
_searchBar = new UISearchBar(new RectangleF(0,0,320, 44))
{
AutocorrectionType = UITextAutocorrectionType.Yes,
};
_searchBar.SearchButtonClicked += SearchBar_SearchButtonClicked;
_searchBar.TextChanged += SearchBarOnTextChanged;
var source = new MvxSimpleTableViewSource(TableView, TaxaListCellView.Key, TaxaListCellView.Key);
var set = this.CreateBindingSet<TaxaListView, TaxaListViewModel>();
set.Bind (source).To (vm => vm.Taxa);
set.Bind (source)
.For (s => s.SelectionChangedCommand)
.To (vm => vm.ItemSelectedCommand);
set.Apply();
TableView.RowHeight = 50;
TableView.Source = source;
TableView.AllowsSelection = true;
TableView.AllowsSelectionDuringEditing = true;
TableView.TableHeaderView = _searchBar;
TableView.ReloadData();
}
private void SearchBarOnTextChanged(object sender, UISearchBarTextChangedEventArgs uiSearchBarTextChangedEventArgs)
{
if(string.IsNullOrWhiteSpace(_searchBar.Text))
{
((TaxaListViewModel) ViewModel).SearchTaxaByText(string.Empty);
}
}
void SearchBar_SearchButtonClicked(object sender, System.EventArgs e)
{
((TaxaListViewModel)ViewModel).SearchTaxaByText(_searchBar.Text);
}
}
, 또는 내가 혈중 알코올 농도를 갈 경우에도 발생 k를 항목 목록에 넣으십시오.
선택이 UITableView에서 허용되어 있습니까? 그리고 행 중 하나를 선택할 때 SetSelected 트리거가 수행됩니까? – choper
안녕하세요 @ choper, 네, 그게 작동합니다, 미안 해요 내가 다시 마크를 잃게 목록으로 돌아갈 경우 또는 내가 검색 표시 줄을 사용하면 내가 선택한 체크 표시를 잃게됩니다. 더 잘 설명하기 위해 두 개의 화면 잡기를 게시 할 것입니다. 답장을 보내 주셔서 감사합니다 – InitLipton
ViewModel에게 속성이 변경되었음을 알려주고 'public 이벤트 EventHandler IsChecked;'를 추가 한 다음 속성이 변경되면 셀에서이 이벤트를 시작합니다. SetSelected 중에. ** ** 작동 할 수도 있음 (셀의 ViewModel에 아이템이 변경되었다는 것을 알려주는 것이 아무것도 없음) – Stuart