0

私はグーグルで見つけたほとんどすべてを試しました。しかし、何も機能しません。

私はこのXamlを持っています:

<UserControl x:Class="Controller.General.Led"
         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" 
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
<Grid>
    <Ellipse Name="ellipse" Fill="{Binding ElementName=Led, Path=backColor}" Stroke="Black" StrokeThickness="3">

    </Ellipse>
</Grid>

そして、このコード:

public partial class Led : UserControl
{
    public Brush backColor = Brushes.Red;

    public Led()
    {
        InitializeComponent();
    }
}

では、なぜこれが機能しないのでしょうか。他の多くのソリューションも試しましたが、何も機能していません。

4

2 に答える 2

3

ここでいくつか問題があります。まず、ElementName をクラスに設定することはできません。これを修正する簡単で簡単な方法は、ユーザー コントロールのデータ コンテキストをそれ自体に設定することです。また、パブリック変数をPROPERTYに変更します(そうしないとバインドは機能しません!)

public partial class Led : UserControl 
{ 
    public Brush backColor{get; set;}

    public Led()
    {
        InitializeComponent();
        this.DataContext = this;
        backColor = Brushes.Red;
    }
}

次に、単に読み取るように xaml を変更します...

<Ellipse 
   Name="ellipse" 
   Fill="{Binding backColor}" 
   Stroke="Black" 
   StrokeThickness="3"
   />
于 2012-05-09T21:07:09.837 に答える
1

を使用するElementName=Ledと、WPF に という名前の要素を探すように指示されますLedが、その名前の要素は宣言されていません。

KDiTraglia の答えは正しい方法ですが、ユーザー コントロールの名前を設定することもできます。

<UserControl x:Name="Led" ...>
    ....
</UserControl>
于 2012-05-09T21:40:10.317 に答える