我有一个在代码中看起来像这样的usercontrol:
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属性但没有太多运气。 你能告诉我我做错了什么吗?
答案 0 :(得分:3)
当属性发生变化时,您无法通知绑定系统。
您应该创建一个依赖项属性,它将自动使用WPF中的现有通知系统
为此,请键入propdp
并按 Tab 以激活Visual Studio的内置代码段。
或者,创建一个单独的ViewModel类并实现INotifyPropertyChanged。
答案 1 :(得分:0)
Exampel:
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 );
}
}
}