Раскрытие внутренних свойств объектов в WPF - PullRequest
0 голосов
/ 09 марта 2012

У меня есть следующий UserControl

<UserControl 
           x:Class="MyUserControl"
           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">
    <Grid>
        <Label Content="Label"
               Name="myLabel" />
    </Grid>
</UserControl>

Мне нужно:
1) Раскройте свойство FontFamily myLabel, как это было свойством MyUserControl.
2) * (действительно необязательно). Определите, что содержимому myLabel должно быть «MyUserControl1», «MyUserControl2» и т. Д., Как это делает дизайнер при добавлении нескольких элементов управления.

Как мне тогда выставить это свойство, как порядковое свойство (?) Или зависимость одно (?) ...

Ответы [ 2 ]

0 голосов
/ 10 марта 2012

FontFamily объявляется в Control, который является основой как UserControl, так и Label, и является унаследованным DependencyProperty. Поэтому, если вы не переопределите значение FontFamily на метке (локальное значение, стиль, триггер и т. Д.), Вы уже можете установить FontFamily на элемент управления UserControl и отобразить его на метке, не делая ничего другого. Если вам нужно изменить его внутренне и выдвинуть его для отображения в UserControl, вам нужно связать FontFamily UserControl с метками с Mode = TwoWay.

Ко второй части - вам нужно настроить механизм подсчета, который увеличивается при каждом создании экземпляра, возможно, как статическое поле внутри элемента управления. Затем можно увеличить значение и применить его к метке в конструкторе UserControl (это будет зависеть от порядка загрузки и переменной во время выполнения во время каждого сеанса).

0 голосов
/ 09 марта 2012

Представьте их как свойства зависимости, фактически каждое свойство в элементах управления должно быть представлено как свойство зависимости.Затем вы можете использовать привязку, например, чтобы прикрепить свойство к Label.FontFamily свойству:

public void MyUserControl()
{
    myLabel.SetBinding(Label.FontFamilyProperty, new Binding {
                                                          Path = "FontFamily",
                                                          Source = this,
                                                      });
}

здесь FontFamily в Path setter - это имя вашего свойства.

PS:На самом деле не получил ваш второй вопрос.Вы можете перефразировать его или предоставить образец?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...