Свойство Получает значение по умолчанию после вызова PropertyInfo.SetValue - PullRequest
0 голосов
/ 28 августа 2011

Я использую отражение, чтобы установить значение свойства, но оно не работает!это потому что цвет по умолчанию сбрасывается после!Вот мой код:

MapWindow.xaml:

<Window x:Class="MapRepresentation.MapWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MapWindow" SizeToContent="WidthAndHeight">
    <Grid Width="640" Height="739">
        <Path x:Name="akkar" Data="..." HorizontalAlignment="Right" Height="124.318" Margin="0,6.482,82.619,0" Stretch="Fill" Stroke="Red" VerticalAlignment="Top" Width="211.881" /> 
    </Grid>
</Window>

MapWindow.Xaml.cs:

public Brush AkkarColor  
{  
    get { return this.akkar.Fill; }
    set { this.akkar.Fill = value; }
}

public void ChangeColor()
{  
    Type type = GetType();
    object obj = Activator.CreateInstance(type);
    PropertyInfo pathInfo = type.GetProperty("AkkarColor");
    pathInfo.SetValue(obj, System.Windows.Media.Brushes.Red, null);
}

private void akkar_MouseEnter(object sender, MouseEventArgs e)
{  
    ChangeColor();
}

что не так?почему цвет пути аккар не меняется?

Ответы [ 2 ]

2 голосов
/ 28 августа 2011

Вы создаете новый экземпляр текущего типа, устанавливаете для него свойство, а затем игнорируете вновь созданный объект. Я подозреваю, что вы хотите изменить свойство объекта current , т.е.

// Remove the line declaring and initializing obj
pathInfo.SetValue(this, System.Windows.Media.Brushes.Red, null); 

Сказав это, не совсем понятно, почему вы используете отражение в первую очередь.

2 голосов
/ 28 августа 2011

Это потому, что вы создаете новый экземпляр MapWindow. Передайте this на SetValue.

public void ChangeColor()  
{  
   Type type = GetType();  
    PropertyInfo pathInfo = type.GetProperty("AkkarColor");  
    pathInfo.SetValue(this, System.Windows.Media.Brushes.Red, null);  
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...