我有嵌套(自定义)控件的自定义控件。我想从嵌套控件获取属性并将其传递给主控制器的转换器。这里是我的代码:如何通过绑定路径嵌入控件的属性?
<Button.IsEnabled>
<MultiBinding Converter="{x:Static app:MainControl.CanExcludeConverter}">
<Binding Path="PageIndex" ElementName="nav_pane"/>
<Binding Path="History" />
</MultiBinding>
</Button.IsEnabled>
第二个参数是正确传递,但第一个是不是 - 不管我做什么,我只得到DependencyProperty.UnsetValue。首先,我将PageIndex作为带通告符的属性,然后我创建了它的依赖属性,然后尝试了几种设置绑定的方法 - 没有成功。
“nav_pane”是嵌套在MainControl中的自定义控件的名称。 PageIndex是NavPane的依赖属性。
我缺少什么?
编辑更长例子。 MainControl实际上由NavPane组成,这就是:-)感谢在NavPane中设置的依赖属性作为“槽”,我可以在NavPane的框架(矩形)中添加新的控件。所以这是它如何启动:
<UserControl x:Class="Worture.MainControl"
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"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:app="clr-namespace:Worture"
mc:Ignorable="d"
Height="Auto" Width="320"
BorderThickness="2" BorderBrush="Navy"
MouseEnter="UserControl_MouseEnter"
IsVisibleChanged="UserControl_IsVisibleChanged"
Loaded="UserControl_Loaded">
<Grid Margin="4,0,4,4">
<app:NavPane x:Name="nav_pane"
OnNavigation="UpdateNavPane">
<app:NavPane.UpperSlot>
<Button Margin="4,0,0,0">
<StackPanel Orientation="Horizontal">
<app:AutoGreyableImage Source="/Worture;component/Images/plus.png" Width="24" Height="24"/>
</StackPanel>
<Button.IsEnabled>
...
其余的是以上。
NavPane中的房产属性。
public static readonly DependencyProperty PageIndexProperty =
DependencyProperty.Register(NameOf.Get((NavPane dlg) => dlg.PageIndex),
typeof(int?),
typeof(NavPane),
new UIPropertyMetadata(null));
public int? PageIndex
{
get { return (int?)GetValue(PageIndexProperty); }
set { SetValue(PageIndexProperty, value); }
}
NameOf是SO找到了一个不错的类,它得到的属性,字段等多亏了它,我尽量避免神奇的数字,我更适合混淆的名称。
我得到UnsetValue作为转换器中的输入参数。 PageIndex在各种场合设置(也取决于用户)。但为了集中,我将它(现在)设置为null作为构造函数的第一行。所以理论上我应该得到这样的参数 - null(如“int?”)。
您在输出窗口中遇到什么绑定错误? ([Debug Databindings](http://blogs.msdn.com/b/wpfsldesigner/archive/2010/06/30/debugging-data-bindings-in-a-wpf-or-silverlight-application.aspx)) – 2011-06-01 16:46:14
@HB,没有(与这些控件相关,有一些错误,但对于完全不同的窗口/控件)。 – greenoldman 2011-06-01 17:08:00
你能给我们多一点你的XAML显示控件的嵌套? – Tim 2011-06-01 17:39:07