1

こんにちは、私はカスタム usercontrol を使用して wpf アプリケーションを作成しました。問題は、実行時にカスタム コントロールのプロパティを更新または変更できないことです。 -->ここにユーザー コントロールのコードがあります。

<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 File: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 に配置したインスタンスを使用します (名前プロパティを介して)。

<uc:UserControlExample Name="myUC"/>

myUC.Box1Width = 100;

別の問題は、UC の長方形の幅を変更するだけである可能性があります。UC の幅が 50 で、uc.Box1Width=100 を呼び出すとします。UC の幅は 50 のままなので、何も変更されません。

于 2013-01-24T13:52:38.913 に答える