我在页面中有一个控件,其中包含另一个指定为FrameworkElement的控件。使用它的XAML如下:
<controls:HiddenPageControl
x:Name="HiddenContent"
Title="{Binding Name}">
<controls:HiddenPageControl.MainContent>
<controls:TextButtonControl
BtnText="{Binding ElementName=HiddenContent, Path=DataContext.Name}"
Click="Button_Click"/>
</controls:HiddenPageControl.MainContent>
</controls:HiddenPageControl>
后面的代码设置MainContent元素,如下所示:
public FrameworkElement _content;
public FrameworkElement MainContent
{
get
{
return _content;
}
set
{
if (value != _content)
{
_content = value;
MainContentPanel.Children.Clear();
if (value != null)
{
MainContentPanel.Children.Add(value);
}
NotifyPropertyChanged("MainContent");
}
}
}
public static readonly DependencyProperty MainContentProperty =
DependencyProperty.Register("MainContent", typeof(FrameworkElement), typeof(HiddenPageControl),
new PropertyMetadata(default(FrameworkElement), MainContent_PropertyChangedCallback));
private static void MainContent_PropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
HiddenPageControl control = (HiddenPageControl)d;
control.MainContent = (FrameworkElement)e.NewValue;
}
HiddenPageControl包含一个正确显示的标题,但是当我尝试将同一属性(Name)分配给TextButtonControl时,它永远不会显示。然而,它的工作方式是返回,即TextButtonControl中的Click事件。
我也尝试通过DataContext分配它,如下所示:
<controls:HiddenPageControl
x:Name="HiddenContent"
Title="{Binding Name}">
<controls:HiddenPageControl.MainContent>
<controls:TextButtonControl
DataContext="{Binding TextButtonVM}"
BtnText="{Binding ElementName=ActionPlanPageName, Path=DataContext.Name}"
Click="Button_Click"/>
</controls:HiddenPageControl.MainContent>
</controls:HiddenPageControl>
将TextButtonVM作为TextButtonControlViewModel的一个实例,这是一个适用于TextButtonControl的虚拟机,可以在应用程序的许多其他位置使用。
这些选项都没有起作用;当我尝试通过DataBinding为TextButtonControl分配一个标签时,它没有显示任何内容,虽然它编译并且它根本不会崩溃。
如何进行此绑定?如果您需要更多代码,请询问。