Как я могу использовать элемент управления в шаблоне? - PullRequest
1 голос
/ 21 июля 2011
<Style x:Key="abc" TargetType="{x:Type Window}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Window}">
                <button x:name="btn">my button!!</button>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
...
<Window ... Style="{StaticResource styleMainWindow}">

Как я могу использовать кнопку btn?

оправдать ваши ожидания,

MessageBox.Show(this.btn1.name);

произошла ошибка во время компиляции. а также btn1 не появился в intelisense.

Ответы [ 2 ]

1 голос
/ 21 июля 2011

Попробуйте метод FindName в классе ControlTemplate.

Предполагая, , что является контекстом вашего элемента управления:

var button = (Button)this.Template.FindName("btn", this);
0 голосов
/ 21 июля 2011

Полагаю, mjk6026, вы неправильно поняли шаблоны WPF из фактических элементов-членов окна.

Это правда, что когда мы называем элемент пользовательского интерфейса (x: Name), который не является частью какого-либо шаблона, мы можем получить доступ к этому элементу по имени в коде позади.

Для шаблонов вы должны использовать метод FindName () типа шаблона.

Если предположить, что `this 'означает окно, к которому вы применили свой стиль, вы можете получить доступ к кнопке (Button) this.Template.FindName (" btn ", this)

Дайте мне знать, если это ответит на ваш вопрос ...

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