Where I should place initialization/binding logic when using MvxTableViewCell, created from Nib?
up vote
0
down vote
favorite
I created custom MvxTableViewCell, placed all design layouts in .xib file:
public partial class FxTransactionCell: MvxTableViewCell
public static readonly NSString Key = new NSString("FxTransactionCell");
public static readonly UINib Nib = UINib.FromName(Key, NSBundle.MainBundle);
static FxTransactionCell()
protected FxTransactionCell(IntPtr handle): base(handle)
// Note: this .ctor should not contain any initialization logic.
All samples I've seen placed initialization/binding logic into (IntPtr) constructor, but note that comment placed there by VS. I think this constructor can not hold any init logic, because my custom UI elements not yet created and all my UILabels, UIButtons (which layouts in .xib file) are null inside this constructor.
So, where I should place my init/bindings logic then?
xamarin mvvmcross mvxbind
add a comment |
up vote
0
down vote
favorite
I created custom MvxTableViewCell, placed all design layouts in .xib file:
public partial class FxTransactionCell: MvxTableViewCell
public static readonly NSString Key = new NSString("FxTransactionCell");
public static readonly UINib Nib = UINib.FromName(Key, NSBundle.MainBundle);
static FxTransactionCell()
protected FxTransactionCell(IntPtr handle): base(handle)
// Note: this .ctor should not contain any initialization logic.
All samples I've seen placed initialization/binding logic into (IntPtr) constructor, but note that comment placed there by VS. I think this constructor can not hold any init logic, because my custom UI elements not yet created and all my UILabels, UIButtons (which layouts in .xib file) are null inside this constructor.
So, where I should place my init/bindings logic then?
xamarin mvvmcross mvxbind
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I created custom MvxTableViewCell, placed all design layouts in .xib file:
public partial class FxTransactionCell: MvxTableViewCell
public static readonly NSString Key = new NSString("FxTransactionCell");
public static readonly UINib Nib = UINib.FromName(Key, NSBundle.MainBundle);
static FxTransactionCell()
protected FxTransactionCell(IntPtr handle): base(handle)
// Note: this .ctor should not contain any initialization logic.
All samples I've seen placed initialization/binding logic into (IntPtr) constructor, but note that comment placed there by VS. I think this constructor can not hold any init logic, because my custom UI elements not yet created and all my UILabels, UIButtons (which layouts in .xib file) are null inside this constructor.
So, where I should place my init/bindings logic then?
xamarin mvvmcross mvxbind
I created custom MvxTableViewCell, placed all design layouts in .xib file:
public partial class FxTransactionCell: MvxTableViewCell
public static readonly NSString Key = new NSString("FxTransactionCell");
public static readonly UINib Nib = UINib.FromName(Key, NSBundle.MainBundle);
static FxTransactionCell()
protected FxTransactionCell(IntPtr handle): base(handle)
// Note: this .ctor should not contain any initialization logic.
All samples I've seen placed initialization/binding logic into (IntPtr) constructor, but note that comment placed there by VS. I think this constructor can not hold any init logic, because my custom UI elements not yet created and all my UILabels, UIButtons (which layouts in .xib file) are null inside this constructor.
So, where I should place my init/bindings logic then?
xamarin mvvmcross mvxbind
xamarin mvvmcross mvxbind
asked Nov 9 at 5:36
zzheads
4642929
4642929
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
In your public constructor you should put your init/binding logic.
Pay attention that you have to use DelayBind(...) to do binding inside an MvxTableViewCell
public FxTransactionCell()
// Init views if you need to
// Create the bindings
this.DelayBind(this.CreateBindings);
public FxTransactionCell(IntPtr handle) : base(handle)
// Some people repeat the same logic here just in case the above ctor does not get called, ignoring the note from VS but I don't think it's necessary.
private void CreateBindings()
var set = this.CreateBindingSet<FxTransactionCell, FxTransactionItemViewModel>();
set.Bind(this.MyLabel).To(vm => vm.MyStringProperty);
set.Apply();
HIH
Doesn't work, that c'tor not called by TableView.DequeueReusableCell method
– zzheads
Nov 10 at 7:34
And if you do the logic in the intptr ctor, does it get called?
– fmaccaroni
Nov 10 at 14:30
1
I solve problem by calling custom method Config(FxTransactionCellViewModel) from GetOrCreateCell method of my data source, but is there other way to do it, bind all in some constructor? Or It is possible ONLY if I create all cell subviews programmatically?
– zzheads
Nov 10 at 14:38
1
Thanks a lot, dude!
– zzheads
Nov 10 at 16:12
1
You need to use theprotectedconstructor.protected FxTransactionCell(IntPtr handle) : base(handle)and add theDelayBinding()in there. Also as suggested it should inherit fromMvxTableViewCell. This is the correct answer so if it does not work then there is a problem somewhere else in your code.
– c.lamont.dev
Nov 21 at 7:37
|
show 3 more comments
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53220411%2fwhere-i-should-place-initialization-binding-logic-when-using-mvxtableviewcell-c%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
In your public constructor you should put your init/binding logic.
Pay attention that you have to use DelayBind(...) to do binding inside an MvxTableViewCell
public FxTransactionCell()
// Init views if you need to
// Create the bindings
this.DelayBind(this.CreateBindings);
public FxTransactionCell(IntPtr handle) : base(handle)
// Some people repeat the same logic here just in case the above ctor does not get called, ignoring the note from VS but I don't think it's necessary.
private void CreateBindings()
var set = this.CreateBindingSet<FxTransactionCell, FxTransactionItemViewModel>();
set.Bind(this.MyLabel).To(vm => vm.MyStringProperty);
set.Apply();
HIH
Doesn't work, that c'tor not called by TableView.DequeueReusableCell method
– zzheads
Nov 10 at 7:34
And if you do the logic in the intptr ctor, does it get called?
– fmaccaroni
Nov 10 at 14:30
1
I solve problem by calling custom method Config(FxTransactionCellViewModel) from GetOrCreateCell method of my data source, but is there other way to do it, bind all in some constructor? Or It is possible ONLY if I create all cell subviews programmatically?
– zzheads
Nov 10 at 14:38
1
Thanks a lot, dude!
– zzheads
Nov 10 at 16:12
1
You need to use theprotectedconstructor.protected FxTransactionCell(IntPtr handle) : base(handle)and add theDelayBinding()in there. Also as suggested it should inherit fromMvxTableViewCell. This is the correct answer so if it does not work then there is a problem somewhere else in your code.
– c.lamont.dev
Nov 21 at 7:37
|
show 3 more comments
up vote
0
down vote
In your public constructor you should put your init/binding logic.
Pay attention that you have to use DelayBind(...) to do binding inside an MvxTableViewCell
public FxTransactionCell()
// Init views if you need to
// Create the bindings
this.DelayBind(this.CreateBindings);
public FxTransactionCell(IntPtr handle) : base(handle)
// Some people repeat the same logic here just in case the above ctor does not get called, ignoring the note from VS but I don't think it's necessary.
private void CreateBindings()
var set = this.CreateBindingSet<FxTransactionCell, FxTransactionItemViewModel>();
set.Bind(this.MyLabel).To(vm => vm.MyStringProperty);
set.Apply();
HIH
Doesn't work, that c'tor not called by TableView.DequeueReusableCell method
– zzheads
Nov 10 at 7:34
And if you do the logic in the intptr ctor, does it get called?
– fmaccaroni
Nov 10 at 14:30
1
I solve problem by calling custom method Config(FxTransactionCellViewModel) from GetOrCreateCell method of my data source, but is there other way to do it, bind all in some constructor? Or It is possible ONLY if I create all cell subviews programmatically?
– zzheads
Nov 10 at 14:38
1
Thanks a lot, dude!
– zzheads
Nov 10 at 16:12
1
You need to use theprotectedconstructor.protected FxTransactionCell(IntPtr handle) : base(handle)and add theDelayBinding()in there. Also as suggested it should inherit fromMvxTableViewCell. This is the correct answer so if it does not work then there is a problem somewhere else in your code.
– c.lamont.dev
Nov 21 at 7:37
|
show 3 more comments
up vote
0
down vote
up vote
0
down vote
In your public constructor you should put your init/binding logic.
Pay attention that you have to use DelayBind(...) to do binding inside an MvxTableViewCell
public FxTransactionCell()
// Init views if you need to
// Create the bindings
this.DelayBind(this.CreateBindings);
public FxTransactionCell(IntPtr handle) : base(handle)
// Some people repeat the same logic here just in case the above ctor does not get called, ignoring the note from VS but I don't think it's necessary.
private void CreateBindings()
var set = this.CreateBindingSet<FxTransactionCell, FxTransactionItemViewModel>();
set.Bind(this.MyLabel).To(vm => vm.MyStringProperty);
set.Apply();
HIH
In your public constructor you should put your init/binding logic.
Pay attention that you have to use DelayBind(...) to do binding inside an MvxTableViewCell
public FxTransactionCell()
// Init views if you need to
// Create the bindings
this.DelayBind(this.CreateBindings);
public FxTransactionCell(IntPtr handle) : base(handle)
// Some people repeat the same logic here just in case the above ctor does not get called, ignoring the note from VS but I don't think it's necessary.
private void CreateBindings()
var set = this.CreateBindingSet<FxTransactionCell, FxTransactionItemViewModel>();
set.Bind(this.MyLabel).To(vm => vm.MyStringProperty);
set.Apply();
HIH
answered Nov 9 at 13:47
fmaccaroni
2,3301824
2,3301824
Doesn't work, that c'tor not called by TableView.DequeueReusableCell method
– zzheads
Nov 10 at 7:34
And if you do the logic in the intptr ctor, does it get called?
– fmaccaroni
Nov 10 at 14:30
1
I solve problem by calling custom method Config(FxTransactionCellViewModel) from GetOrCreateCell method of my data source, but is there other way to do it, bind all in some constructor? Or It is possible ONLY if I create all cell subviews programmatically?
– zzheads
Nov 10 at 14:38
1
Thanks a lot, dude!
– zzheads
Nov 10 at 16:12
1
You need to use theprotectedconstructor.protected FxTransactionCell(IntPtr handle) : base(handle)and add theDelayBinding()in there. Also as suggested it should inherit fromMvxTableViewCell. This is the correct answer so if it does not work then there is a problem somewhere else in your code.
– c.lamont.dev
Nov 21 at 7:37
|
show 3 more comments
Doesn't work, that c'tor not called by TableView.DequeueReusableCell method
– zzheads
Nov 10 at 7:34
And if you do the logic in the intptr ctor, does it get called?
– fmaccaroni
Nov 10 at 14:30
1
I solve problem by calling custom method Config(FxTransactionCellViewModel) from GetOrCreateCell method of my data source, but is there other way to do it, bind all in some constructor? Or It is possible ONLY if I create all cell subviews programmatically?
– zzheads
Nov 10 at 14:38
1
Thanks a lot, dude!
– zzheads
Nov 10 at 16:12
1
You need to use theprotectedconstructor.protected FxTransactionCell(IntPtr handle) : base(handle)and add theDelayBinding()in there. Also as suggested it should inherit fromMvxTableViewCell. This is the correct answer so if it does not work then there is a problem somewhere else in your code.
– c.lamont.dev
Nov 21 at 7:37
Doesn't work, that c'tor not called by TableView.DequeueReusableCell method
– zzheads
Nov 10 at 7:34
Doesn't work, that c'tor not called by TableView.DequeueReusableCell method
– zzheads
Nov 10 at 7:34
And if you do the logic in the intptr ctor, does it get called?
– fmaccaroni
Nov 10 at 14:30
And if you do the logic in the intptr ctor, does it get called?
– fmaccaroni
Nov 10 at 14:30
1
1
I solve problem by calling custom method Config(FxTransactionCellViewModel) from GetOrCreateCell method of my data source, but is there other way to do it, bind all in some constructor? Or It is possible ONLY if I create all cell subviews programmatically?
– zzheads
Nov 10 at 14:38
I solve problem by calling custom method Config(FxTransactionCellViewModel) from GetOrCreateCell method of my data source, but is there other way to do it, bind all in some constructor? Or It is possible ONLY if I create all cell subviews programmatically?
– zzheads
Nov 10 at 14:38
1
1
Thanks a lot, dude!
– zzheads
Nov 10 at 16:12
Thanks a lot, dude!
– zzheads
Nov 10 at 16:12
1
1
You need to use the
protected constructor. protected FxTransactionCell(IntPtr handle) : base(handle) and add the DelayBinding() in there. Also as suggested it should inherit from MvxTableViewCell. This is the correct answer so if it does not work then there is a problem somewhere else in your code.– c.lamont.dev
Nov 21 at 7:37
You need to use the
protected constructor. protected FxTransactionCell(IntPtr handle) : base(handle) and add the DelayBinding() in there. Also as suggested it should inherit from MvxTableViewCell. This is the correct answer so if it does not work then there is a problem somewhere else in your code.– c.lamont.dev
Nov 21 at 7:37
|
show 3 more comments
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53220411%2fwhere-i-should-place-initialization-binding-logic-when-using-mvxtableviewcell-c%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown