1

嘿伙计们,我用自定义用户控件创建了一个 wpf 应用程序,问题是我无法在运行时更新或更改自定义控件的属性,-->这是用户控件文件的代码:usercontrol.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>

文件:usercontrol.xaml.cs

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

--->这是 Wpfapplication 文件的简单代码:Mainwindow.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;

    }
}

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

4

2 回答 2

2

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

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

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

于 2013-01-24T13:49:08.000 回答
0

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

<uc:UserControlExample Name="myUC"/>

myUC.Box1Width = 100;

另一个问题可能是,您只需更改 UC 矩形的宽度。因此,假设 UC 的宽度为 50,而您调用 uc.Box1Width=100,UC 的宽度仍然为 50,因此它不会改变任何内容。

于 2013-01-24T13:52:38.913 回答