0

我有一个在代码中看起来像这样的用户控件:

using System;
using System.Windows;
using System.Windows.Controls;

namespace Client
{
    public partial class Spectrum : UserControl
    {
        public string AntennaName { get; set; }

        public Spectrum()
        {
            InitializeComponent();
        }
    }
}

和xaml(不是全部,而是重要部分):

<UserControl x:Class="Client.Spectrum"
             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" 
             xmlns:local="clr-namespace:Client"
             mc:Ignorable="d" d:DesignHeight="150" d:DesignWidth="350" 
             Background="#253121" BorderBrush="Black" BorderThickness="1"
             DataContext="{Binding RelativeSource={RelativeSource Self}}">
    <StackPanel
        <TextBlock Margin="10,3,0,0" Foreground="White" 
                   FontWeight="Bold" FontStyle="Italic" TextAlignment="Left"
                   Text="{Binding AntennaName}"/>
    </StackPanel>
</UserControl>

如您所见,我试图将 AntennaName 属性绑定到 TextBlock.Text 属性,但运气不佳。你能告诉我我做错了什么吗?

4

2 回答 2

3

当属性更改时,您无法通知绑定系统。

您应该创建一个依赖属性,它将自动使用 WPF 中现有的通知系统。
为此,请键入propdp并按下Tab以激活 Visual Studio 的内置代码片段。

或者,创建一个单独的 ViewModel 类并实现 INotifyPropertyChanged。

于 2012-11-05T15:37:10.827 回答
0

示例:

public partial class MyControl: UserControl
{
  public CoalParameterGrid( )
  {
    InitializeComponent( );
  }

  public static DependencyProperty DarkBackgroundProperty = DependencyProperty.Register( "DarkBackground", typeof( Brush ), typeof( MyControl) );

  public Brush DarkBackground
  {
    get
    {
      return (Brush)GetValue( DarkBackgroundProperty );
    }
    set
    {
      SetValue( DarkBackgroundProperty, value );
    }
  }
}
于 2012-11-05T15:44:58.803 回答