Добавить элемент управления с использованием XAML, но создать его экземпляр с помощью кода - PullRequest
4 голосов
/ 14 декабря 2011

Я пытаюсь понять, как XAML и программный код общаются друг с другом.Я знаю, что выделенный код может получить доступ к элементу, созданному в XAML, с помощью атрибута Name, например:

Создать кнопку в XAML:

<SomeControlParent controlParent>
<Button Name=button1/>
<SomeControlParent controlParent>

Изменить свойства кнопки в выделенном фрагменте кода

button1.Content = "I created this button in XAML"

Мне было интересно, можно ли сделать обратное с помощью XAML, например:

Создать кнопку в выделенном коде:

Button button1 = new Button();
controlParent.Child.Add(button1);

и затем изменитьСодержимое кнопки с использованием XAML.

Спасибо!Сумайя

1 Ответ

3 голосов
/ 14 декабря 2011

Наличие кода позволяет вам ссылаться на элементы, для которых в XAML определено значение x: Name. В другом направлении вы можете определить свойства в UserControl, а затем ссылаться на них в XAML, используя привязку RelativeSource:

{Binding MyProperty, RelativeSource={RelativeSource Self}}

Итак, в вашем примере у вас может быть свойство в UserControl (хотя вы, вероятно, захотите, чтобы оно было свойством зависимости, поэтому у вас есть уведомление об изменении):

public Button Button1 { get; private set; }

А затем вставьте его в свой XAML, используя:

<ContentControl Content={Binding Button1, RelativeSource={RelativeSource Self}}>
    <ContentControl.Resources>
        <Style TargetType="Button">
            <Setter Property="Content" Value="Hey, I changed the name in XAML!"/>
        </Style>
    </ContentControl.Resources>
</ContentControl>
...