Jak korzystać z odbicia, aby uzyskać dostęp do właściwości obiektów Window
?C# za pomocą odbicia, aby uzyskać dostęp do właściwości okna
Oto minimalne przykład:
.xaml
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>
kod związany z pliku:
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
jest null
(p2
nie jest zgodnie z oczekiwaniami). Dlaczego tak jest? Czy Window
jest rodzajem specjalnego object
? A może dlatego, że typ Textbox
jest generowany jako pole internal
?
#line 5 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox Textbox;
'TextBox' nie jest własnością' MainWindow'. Jest to element dodany w układzie i to wszystko. Btw co próbujesz osiągnąć? –
dlaczego próbujesz pobrać '" Textbox "', ale w wygenerowanym 'Test;'? – Grundy
@Grundy poprawiono kod edytowany literami przed dodaniem do posta – ubi