如何在内容演示者内部获取UI对象?

时间:2019-07-15 08:14:16

标签: wpf custom-component

我有一个ItemsControl通过绑定显示列表。该列表属于ViewModel类型,然后在DataTemplate中引用该列表以显示按钮。该按钮的UID绑定到视图模型的GUID。将新的视图模型添加到绑定列表时,我需要控制将要添加的按钮,因为用户需要能够拖放按钮。目前,我能找到的最接近的是找到显示按钮的ContentPresenter,但是该ContentPresenter的内容是视图模型类型。

是否可以找到已添加的按钮?还是我不应该使用DataTemplate自己创建按钮来访问它们?

我已经使用VisualTree帮助器来获取内容演示者,但是没有设法找到按钮。

1 个答案:

答案 0 :(得分:0)

您可以为Loaded处理Button事件:

<DataTemplate>
    <Button Loaded="OnButtonLoaded" ... />

private void OnButtonLoaded(object sender, RoutedEventArgs e)
{
    Button button = (Button)sender;
    //...
}

在将VisualTreeHelper实际添加到可视树并​​以任何方式加载之前,您将无法使用java.time.LocalDate对其进行引用。