way WPF綁定到字段




wpf textbox binding (2)

我嘗試了幾乎所有我在谷歌上找到的東西。 但沒有任何工作。

我有這個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();
    }
}

那麼為什麼這不工作? 我也嘗試了很多其他的解決方案,但沒有任何工作。


當您使用ElementName=Led ,您告訴WPF查找名為Led的元素,但是您尚未聲明具有該名稱的元素。

KDiTraglia的答案是正確的方法,但為用戶控件設置名稱也是可行的:

<UserControl x:Name="Led" ...>
    ....
</UserControl>

這裡有兩件事情是錯誤的,首先你不能把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"
   />




binding