WPF - 在运行时更新自定义用户控件

本文关键字:自定义 用户 控件 更新 运行时 WPF | 更新日期: 2023-09-27 17:55:52

嘿伙计们,我创建了一个带有自定义用户控件的WPF应用程序,问题是我无法在运行时更新或更改自定义控件的属性,-->这里是用户控制的代码文件:用户控制.xaml

<UserControl x:Class="ExampleWpf.UserControlExample"
         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" 
          Width="Auto" Height="Auto">
<Rectangle Width="60" Height="200" Fill="#FFB65959" Name="Box1"></Rectangle>

文件:用户控制.xaml.cs

namespace ExampleWpf{
public partial class UserControlExample : UserControl
{
    public UserControlExample()
    {
        InitializeComponent();
    }
    public double Box1Width
    {
        get { return (Box1.Width); }
        set { Box1.Width = value; }
    }
}

--->这是Wpf应用程序的简单代码文件:主窗口.xaml.cs

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        UserControlExample uc = new UserControlExample();
        uc.Box1Width = 100;
    }
}

当用户单击按钮时,我只想在运行时更改自定义控件的宽度---->但不幸的是我没有成功请帮帮我

WPF - 在运行时更新自定义用户控件

您正在创建用户控件的新实例,而不对其进行任何操作。

您应该找到控件的现有实例并对其进行更新。

您还应该通过依赖属性实现此类行为。这为您提供了教程中概述的各种优势,但这里的主要优势是您可以在运行时设置这样的属性。

使用放置在 xaml 中的实例(例如通过 Name-属性),如下所示:

<uc:UserControlExample Name="myUC"/>
myUC.Box1Width = 100;

另一个问题可能是,您只需更改UC矩形的宽度。因此,假设UC的宽度为50,您称为uc。Box1Width=100,UC的宽度仍然是50,所以它不会改变任何东西。