WPF导航参数绑定

时间:2014-07-17 09:42:25

标签: c# wpf binding devexpress

你好我有这个xaml

<dxui:PageAdornerControl Header="Details" DataContext="{Binding SelectedItem}">
    <dxui:PageAdornerControl.HeaderTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Grid.Column="1" >
                    <dxui:NavigationButton FontSize="14" Margin="10, 0, 0, 0" Content="Customers" NavigateTo="CustomersPage"/>
                    <dxui:NavigationButton FontSize="14" Margin="10, 0, 0, 0" Content="Categorys" NavigateTo="CategorysPage"/>
                    <dxui:NavigationButton FontSize="14" Margin="10, 0, 0, 0" Content="Products" NavigateTo="GroupedItemsPage" NavigationParameter="{Binding Title}"/>
                </StackPanel>
            </Grid>
        </DataTemplate>
    </dxui:PageAdornerControl.HeaderTemplate>
    <dxlc:LayoutControl Padding="40, 10, 40, 10" ItemSpace="20">
        <dxlc:LayoutGroup Orientation="Vertical" ItemSpace="10" VerticalAlignment="Top" HorizontalAlignment="Left">
            <TextBlock Text="{Binding Title}" FontSize="20" IsHyphenationEnabled="True"/>
            <TextBlock Text="{Binding Subtitle}" FontSize="16"/>
            <Image Source="{Binding Image}"/>
        </dxlc:LayoutGroup>
        <dxlc:LayoutGroup Orientation="Vertical">
            <TextBlock Text="{Binding Description}" TextWrapping="Wrap" FontSize="16" Margin="0,70,0,0" Height="20"/>
            <TextBlock Text="{Binding Content}" TextWrapping="Wrap" FontSize="16" Margin="0,0,0,0"/>
        </dxlc:LayoutGroup>
    </dxlc:LayoutControl>
</dxui:PageAdornerControl>

Bindings可以与TextBloks和Images一起使用,但是当我尝试将Title绑定到NavigationParameter时,它不起作用并发送null参数。

1 个答案:

答案 0 :(得分:0)

问题的原因是您已设置PageAdornerControl.Header属性。此值将转发到PageAdornerControl.HeaderTemplate,并转发到NavigationButtons DataContext。这就是你的绑定不起作用的原因。

您可以清除Header属性(它实际上未在HeaderTemplate中使用)或将其绑定到SelectedItem属性。作为替代方案,您可以使用RelativeSource绑定:

NavigationParameter="{Binding Path=DataContext.SelectedItem.Title, RelativeSource={RelativeSource AncestorType={x:Type dxui:PageAdornerControl}}}