Проблема RelativeSource FindAncestor

Я не фирма в Lisp Emacs, но насколько я знаю, большая разница от языка Common LISP - то, что это использует динамический обзор повсюду. Руководство Lisp Emacs указывает, что Lisp Emacs не имеет закрытий.

я попытаюсь применить свои теоретические знания динамического обзора.

, Если у Вас есть функция id, который просто возвращает значение my-id:

(defun id ()
  my-id)

и Вы используете его в некоторой другой функции:

(defun some-other-place ()
  (id))

и где-нибудь на пути к вызову id Вы связываете my-id через, например, позволенный:

(defun even-elsewhere ()
  (let ((my-id 5))
    (some-other-place)))

это должно отдать 5.

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

5
задан Rob 24 October 2011 в 11:35
поделиться

1 ответ

There are two problems in your code

  1. the GridViewColumn is NOT a visual ancestor of the TextBox, its ancestor is a GridViewColumnHeader
  2. You should bind to the ActualWidth of the GridViewColumnHeader, not the Width (if Width is not specified, it will be an invalid number)

So your code becomes :

              <GridViewColumn
                            DisplayMemberBinding="{Binding Path=BookId}"
                            Width="100">
                <GridViewColumn.Header>
                    <Border BorderBrush="Black" >
                        <TextBlock Text="ID" Width="{Binding RelativeSource=
                                                        {RelativeSource FindAncestor, 
                                                        AncestorType={x:Type GridViewColumnHeader}}, 
                                                        Path=ActualWidth}">
                            <TextBlock.ContextMenu>
                                <ContextMenu>item1</ContextMenu>
                            </TextBlock.ContextMenu>
                        </TextBlock>
                        </Border>
                </GridViewColumn.Header>
            </GridViewColumn>
14
ответ дан 18 December 2019 в 13:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: