Привязка данных XAML к другому классу - PullRequest
1 голос
/ 13 марта 2019

Каков наилучший способ привязать атрибут тега ChildButton в TreeView (в коде Tag="{Binding ParentData}" к свойству ParentData класса TreeParent?

<TreeView>
  <TreeView.Resources>
    <HierarchicalDataTemplate DataType="{x:Type local:TreeParent}" ItemsSource="{Binding Members}">
        <Button x:Name="ParentButton" Text="{Binding ParentName}">
        </Button>
    </HierarchicalDataTemplate>

    <DataTemplate DataType="{x:Type local:TreeChild}" ItemsSource="{Binding Members}">
        <Button x:Name="ChildButton" Text="{Binding ChildName}" Tag="{Binding ParentData}">
        </Button>
    </DataTemplate>
  </TreeView.Resources>
</TreeView>

И код .cs файла xaml выглядит так:

public class TreeParent
{
   public string ParentName { get; set; }
   public SomeDataClass ParentData { get; set; }
   public ObservableCollection<TreeChild> Members { get; set; }
}

public class TreeChild
{
   public string ChildName { get; set; }
}

1 Ответ

0 голосов
/ 14 марта 2019

Попробуйте это:

<Button x:Name="ChildButton" ... 
        Tag="{Binding DataContext.ParentData, 
             RelativeSource={RelativeSource AncestorType=TreeViewItem, AncestorLevel=2}}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...