WP8 Silverlight绑定到FrameworkElement中的属性

时间:2015-03-16 10:41:27

标签: c# wpf silverlight windows-phone-8 controls

我在页面中有一个控件,其中包含另一个指定为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分配一个标签时,它没有显示任何内容,虽然它编译并且它根本不会崩溃。

如何进行此绑定?如果您需要更多代码,请询问。

0 个答案:

没有答案