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

时间:2013-01-24 13:46:20

标签: c# wpf xaml

嘿大家我用自定义usercontrol创建了一个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; }
    }
}

---&gt;这是一个简单的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;

    }
}

我想在用户点击按钮时改变自定义控件的宽度----&gt;但不幸的是我没有成功 请帮帮我

2 个答案:

答案 0 :(得分:2)

您正在创建用户控件的新实例,而不是使用它做任何事情。

您应该找到控件的现有实例并更新它。

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

答案 1 :(得分:0)

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

<uc:UserControlExample Name="myUC"/>

myUC.Box1Width = 100;

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