2013-05-06 2 views
0

У меня есть usercontrol, который я хочу поместить в FixedDocument, но прежде чем я это сделаю, мне нужно изменить текст метки. Я думаю, мне нужно использовать свойства зависимостей.Как установить текст метки

Вот упрощенная версия XAML.

<UserControl x:Class="PrinterTest.TestControl" 
      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" 
      DataContext="{Binding RelativeSource={RelativeSource Self}}"> 
    <Grid> 
     <Label Content="{Binding LabelCaption}" 
       Height="24" HorizontalContentAlignment="Right" Name="lblCaption"  
       Width="140" /> 
    </Grid> 
</UserControl> 

И отделенный код

public partial class TestControl : UserControl 
{ 
    public TestControl() 
    { 
     InitializeComponent(); 
    } 

    public readonly static DependencyProperty 
     LabelCaptionDP = DependencyProperty.Register("LabelCaption", 
                typeof(string), 
                typeof(TestControl), 
                new FrameworkPropertyMetadata("no data")); 

    public string LabelCaption 
    { 
     get { return (string)GetValue(LabelCaptionDP); } 
     set { SetValue(LabelCaptionDP, value); } 
    } 

В бите вызывающего я создаю экземпляр по TestControl myControl = new TestControl();

Что я делаю неправильно, потому что я не могу получить доступ к свойствам в новой копии контроля ? Спасибо!

+0

Спасибо LPL - изменили эти соглашения об именах. В моем кодовом коде я попробовал UserControl TestControl = new TestControl(); (TestControl) TestControl.LabelCaptionProperty = "Test"; Но я получаю System.Windows.Controls.UserControl не содержит определения для LabelCaptionProperty, и я не вижу ничего в Intellisense. Какая глупость я делаю? –

ответ

2

Изменить LabelCaptionDPLabelCaptionProperty.

От Dependency Properties Overview:

Именование условность собственности и ее поддержка DependencyProperty области имеет важное значение. Имя поля всегда имя свойства, с суффиксом Прилагаемое. Для получения более информация об этом соглашении и его причинах см. В разделе Пользовательские Свойства зависимостей.

Пожалуйста, прочитайте о Dependency Название недвижимости конвенции в Custom Dependency Properties.

+0

Спасибо LPL - изменили эти соглашения об именах. В моем кодовом коде я попробовал UserControl TestControl = new TestControl(); (TestControl) TestControl.LabelCaptionProperty = «Тест»; Но я получаю System.Windows.Controls.UserControl не содержит определения для LabelCaptionProperty, и я не вижу ничего в Intellisense. Какая глупость я делаю? –

+0

Для этого используйте свойство Back CLR: '((TestControl) TestControl) .LabelCaption =" Test ";'. – LPL

+0

Спасибо. Синтаксис отсортирован! Это мое первое эссе в радостях WPF. Даресей, я мог бы повесить его, как только поступят мои учебники. Теперь все, что мне нужно сделать, это бороться с моими контурами сетки. Еще раз спасибо, что освободил меня от разочарования. –

Смежные вопросы