Home > Enterprise >  Why are some properties unaccessable
Why are some properties unaccessable

Time:02-01

I was trying to get the text that I wrote in a DataGrid cell after editing it, so I put a breakpoint in the function CellEditEnding and looked at the EventArgs and noticed that it contains the property "Text", so I wouldn't have to do the usual XAML binding hacks to get it.

Text property

However, I quickly noticed that it will not let me access it. Error while trying to access the Text property

After taking a look at the FrameworkElement class, I can confirm that there is no Text property, so what is going on, why can't I acces the property?

CodePudding user response:

It's a bad idea to use the UI as a data store and try and directly work with it.

You should bind an observablecollection of t to the itemssource of your datagrid and work with each instance of t.

That will be far easier to work with.

As to why are some properties inaccessible?

It's because those properties aren't where you think they are. The DatagridCell has a series of things nested within it.

DataGridCell > Border > ContentPresenter > TextBlock

Download snoop enter image description here

See that textblock there?

That's the thing has a text property.

Or at least that's the thing when you're not in edit mode.

Switch to edit mode and I have a TextBoxView.

So one complication is, which are you working with at a given time?

CodePudding user response:

why can't I acces the property?

Because a FrameworkElement indeed has no Text property.

TextBox, which derives from FrameworkElement, has a Text property though so you could cast the EditingElement to a TextBox and then access the property:

string text = (e.EditingElement as TextBox)?.Text;

Visual Studio displays the properties of the actual object in memory.

  • Related