Команда привязки из SplitButton DropDownContent не работает - PullRequest
2 голосов
/ 16 января 2012

У меня SplitButton в моем usercontrol, текст данных usercontrol представляет собой view, который определяет команду, к которой я хочу привязку splitbutton.

Как показывает мой краткий код xaml ниже, первая привязка работает, но вторая (button в DropDownContent) не выводится:

Не удается найти источник для привязки со ссылкой 'RelativeSource FindAncestor, AncestorType = 'System.Windows.Controls.UserControl ....

или (если я заменяю выражение привязки, используя ElementName вместо ReleativeSource)

Не удалось найти источник для привязки со ссылкой 'ElementName = uc' ...

<UserControl x:Name="uc"
             xmlns:extToolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit/extended"
             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"
             >
      <Grid>
        <ItemsControl ItemsSource="{Binding ItemList, IsAsync=True}">
          <ItemsControl.ItemTemplate>
            <DataTemplate>
              <extToolkit:SplitButton Command="{Binding 
                                                  RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, 
                                                  Path=DataContext.OpenCommand, 
                                                  Mode=OneWay}"
                                      CommandParameter="{Binding}"
                                      Content="{Binding ID}">
                <extToolkit:SplitButton.DropDownContent>
                  <Button  Command="{Binding 
                                         RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, 
                                         Path=DataContext.OpenCommand, 
                                         Mode=OneWay}"
                           CommandParameter="{Binding}"
                           Content="{Binding ID}"/>
                </extToolkit:SplitButton.DropDownContent>
              </extToolkit:SplitButton>
            </DataTemplate>
          </ItemsControl.ItemTemplate>
        </ItemsControl>
      </Grid>
    </UserControl>

Ответы [ 2 ]

2 голосов
/ 17 января 2012

В конце концов я обнаружил

DropDownContent и его содержимое в другом визуальном дереве, чем то, которое содержит SplitButton.Таким образом, Привязка к RelativeSource не может работать, она не находит требуемый относительный источник, поскольку они находятся в разных визуальных деревьях.

REF (хотя это для другого элемента управления,но я думаю, что они основаны на одном и том же)

Поэтому я должен добавить свою виртуальную машину как свойство в объекте item и связать команду vm оттуда.

0 голосов
/ 17 января 2012

Я думаю, что вы должны ссылаться на вашу команду как Command="{x:Static someNamespace:SomeClass.OpenCommand}".

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