Come si utilizza la riflessione per accedere alle proprietà degli oggetti Window
?C# utilizzando la riflessione per accedere alle proprietà della finestra
Ecco un esempio minimo:
.xaml
di file:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow">
<TextBox x:Name="Textbox" Text=""/>
</Window>
codice al file:
public class A
{
public int Prop { get; set; }
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Test.Text = "blah";
PropertyInfo p1 = this.GetType().GetProperty("Textbox");
PropertyInfo p2 = new A().GetType().GetProperty("Prop");
}
}
p1
è null
(p2
non è come previsto). Perché è così? Il tipo Window
è una specie di speciale object
? Oppure perché il tipo di Textbox
viene generato come un campo internal
?
#line 5 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox Textbox;
'TextBox' non è una proprietà di' MainWindow'. È un elemento aggiunto nel layout e basta. A proposito, cosa stai cercando di ottenere? –
perché provi a ottenere "" Textbox "' ma nel generato 'Test;'? – Grundy
@Grundy ha corretto il codice typo - modificato prima di aggiungere al post – ubi