Получить значение свойства WPF

63
6

Я пытаюсь получить значение из свойства, но не работает. Я всегда получаю нулевое значение.

string imageNormal;

public static readonly DependencyProperty ImageNormalProperty =
DependencyProperty.Register("ImageNormal", typeof(string), typeof(MainWindow));

public string ImageNormal
{
get { return (string)GetValue(ImageNormalProperty); }
set { SetValue(ImageNormalProperty, value); }
}

public ButtonImageStyle()
{
InitializeComponent();
DataContext = this;
Console.WriteLine("Path: " + ImageNormal);
}

Xaml ButtonImageStyle.xaml:

<Image Source="{Binding ImageNormal}" Stretch="None" HorizontalAlignment="Center" VerticalAlignment="Center" />

Xaml MainWindow.xaml:

<local:ButtonImageStyle HorizontalAlignment="Left" Height="60" VerticalAlignment="Top" Width="88" ImageNormal="C:/Users/Xafi/Desktop/add.png"/>

Я всегда получаю следующий вывод: Путь:

спросил(а) 2021-01-19T18:21:29+03:00 6 месяцев, 1 неделя назад
1
Решение
119

так как ваш ImageSource должен быть привязан к нему parent DependencyProperty (который определяется вашим кодом позади), вы должны определить свою привязку, которая будет использоваться для вашего UserControl (пусть назовите это "Это"). Таким образом, попробуйте изменить свой xaml следующим образом:

Код Xaml

<UserControl x:Class="SomeBindingExampleSOHelpAttempt.ButtonImageStyle"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300" x:Name="This">
<Grid>
<Image Source="{Binding ElementName=This, Path=ImageNormal, UpdateSourceTrigger=PropertyChanged}"
Stretch="None" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid></UserControl>

Здесь вы можете найти дополнительный идеальный ответ.

С уважением.

ответил(а) 2021-01-19T18:21:29+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема