Как установить System.Windows.Controls.Image как статический в XAML в настольном приложении WPF - PullRequest
0 голосов
/ 06 июля 2019

Мне нужно установить System.Windows.Controls.Image в MainWindow.xaml как статический объект, чтобы я мог изменить источник из статического метода во время выполнения.

Я знаю, чтоВы можете использовать ContentControl для таких объектов, как TextBox, но это не сработает для System.Windows.Controls.Image.

Я только вчера узнал о ContentControl, так что теперь я вхожу в другую область кодирования, которую я мало знаюиз.

App.xaml

<Application.Resources>
    <Label x:Name="label1" x:Key="label1"/>
    <Style x:Key="labels" TargetType="{x:Type ContentControl}">
        <Setter Property="Height" Value="24" />
        <Setter Property="Foreground" Value="#B3B3B3" />
    </Style>
</Application.Resources>

MainWindow.xaml

<ContentControl Content="{StaticResource label1}" Style="{StaticResource labels}"/>

MainWindow.xaml.cs

var label1 = Application.Current.Resources["label1"] as Label;
            label1.Content = "This is label1";

Мне нужноИзмените источник изображения статическим методом, но мне нужен более оптимальный подход.

private static System.Windows.Controls.Image staticimage1 = new System.Windows.Controls.Image();

staticimage1 = image1;

Мне кажется, что это просто хак, и выполнение этого в WPF, кажется, побеждает всю часть XAML.(слишком много кода позади).

1 Ответ

0 голосов
/ 07 июля 2019

Если в вашем MainWindow есть именованный элемент Image, например

<Image x:Name="image"/>

Вы можете получить к нему доступ статическим методом через свойство static Application.Current:

((MainWindow)Application.Current.MainWindow).image.Source
    = new BitmapImage(new Uri(...));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...