Установите значение свойства зависимости пользовательского элемента управления в метку элемента управления - PullRequest
0 голосов
/ 03 апреля 2012

Я создаю пользовательский элемент управления, внутри которого у меня есть элемент управления Label.(например: элемент управления электронной почтой, содержит метку и текстовое поле).

В элементе управления адресом электронной почты я определил свойство Title, которое, когда пользователь изменяет значение свойства, я хочу задать строкузначение для метки.

ниже - XAML и код:

XAML:

<UserControl x:Class="SIMind.ClinicManagement.GUI.Controls.CommonControl.EmailAddressCtrl"
             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" Height="32" MinHeight="32" MaxHeight="32" Width="386" MinWidth="386">
    <Grid>
      <Grid.RowDefinitions>
         <RowDefinition />
      </Grid.RowDefinitions>
      <StackPanel HorizontalAlignment="Stretch" Margin="0" Name="stackPanel1" VerticalAlignment="Stretch" Orientation="Horizontal">
         <Label Content="Email :" Height="24" HorizontalContentAlignment="Right" Name="lblEmailCaption" Tag="PhoneType" Width="140" />
         <TextBox MaxLength="100" Name="txtEmail" Text="email@server.com" Width="240" Margin="1" Height="23" />
      </StackPanel>
   </Grid>
</UserControl>

Код:


namespace SIMind.ClinicManagement.GUI.Controls.CommonControl
{
/// <summary>
/// Interaction logic for EmailAddressCtrl.xaml
/// </summary>
public partial class EmailAddressCtrl : UserControl
{
    public EmailAddressCtrl()
   {
       InitializeComponent();
   }

   #region Dependency Property

   #region Title Property

   /// <summary>
   /// Title property
   /// </summary>
   public static readonly DependencyProperty TitleProperty =
      DependencyProperty.Register("Title", typeof(String),
      typeof(EmailAddressCtrl), new PropertyMetadata("Phone Number :"));

   /// <summary>
   /// Gets and Sets the main label of the control.
   /// </summary>
   public string Title
   {
       get { return (string)GetValue(TitleProperty); }
       set { 
          SetValue(TitleProperty, value);
          lblEmailCaption.Content = value; 
       }
   }

   #endregion


   #endregion

   }
}


Но, похоже, это работает не так, как я хотел: свойство зависимости установлено, но метка не обновляется, чтобы быть установленным свойством.

Кто-нибудь получил хороший ответ?:-)

1 Ответ

1 голос
/ 03 апреля 2012

Надеюсь, это сработает для вас

<Label Content="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type EmailAddressCtrl}},Path=Title}" Height="24" HorizontalContentAlignment="Right" Name="lblEmailCaption" Tag="PhoneType" Width="140" /> 
...