WPF导航参数绑定

本文关键字:绑定 参数 导航 WPF | 更新日期: 2023-09-27 18:13:29

你好,我有这个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>

textblock和Images的绑定工作得很好,但当我试图将标题绑定到NavigationParameter时,它不起作用,并发送空参数。

WPF导航参数绑定

问题的原因是您设置了PageAdornerControl。标题属性。这个值被转发给PageAdornerControl。HeaderTemplate和NavigationButtons DataContext。这就是绑定不起作用的原因。

你可以清除Header属性(它实际上并没有在你的HeaderTemplate中使用)或者将它绑定到SelectedItem属性。作为替代,您可以使用RelativeSource绑定:

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