【发布时间】:2018-07-18 02:55:50
【问题描述】:
我无法按照以下草图在 UWP Master/Details 场景中实现删除按钮。
我正在使用以下 XAML 来生成屏幕,它由 ListView 和 ContentPresenter 组成,两者都使用 DataTemplates 绑定到我的视图模型。
<Page.Resources>
<DataTemplate x:Key="MasterListViewItemTemplate" x:DataType="vm:ListItemViewModel">
<StackPanel Orientation="Horizontal">
<SymbolIcon Width="48"
Height="48"
Symbol="Contact" />
<TextBlock Margin="8,0"
VerticalAlignment="Center"
Text="{x:Bind Name, Mode=OneWay}" Style="{ThemeResource BaseTextBlockStyle}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="DetailContentTemplate" x:DataType="vm:ListItemViewModel">
<RelativePanel HorizontalAlignment="Left">
<!-- various input controls -->
<!-- Unable to reference command in parent context here -->
<Button x:Name="MasterRemoveButton" Padding="12,0" Command="{Binding RemoveCommand}">Remove</button>
</RelativePanel>
</DataTemplate>
</Page.Resources>
...
<Grid x:Name="RoleMasterDetailGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="MasterColumn" Width="Auto" />
<ColumnDefinition x:Name="DetailColumn" Width="*" />
</Grid.ColumnDefinitions>
<ListView x:Name="MasterListView"
Grid.Column="0"
IsItemClickEnabled="True"
ItemTemplate="{StaticResource MasterListViewItemTemplate}"
ItemsSource="{Binding ListItemViewModels}">
<ListView.Header>
<Button x:Name="MasterAddNewButton" Padding="12,0" Command="{Binding AddNewCommand}">
<StackPanel Orientation="Horizontal">
<SymbolIcon Width="48"
Height="48"
Symbol="AddFriend" />
<TextBlock Margin="8,0"
VerticalAlignment="Center"
Text="Add" Style="{ThemeResource BaseTextBlockStyle}" />
</StackPanel>
</Button>
</ListView.Header>
</ListView>
<ContentPresenter
x:Name="DetailContentPresenter"
Grid.Column="1"
BorderThickness="1,0,0,0"
Padding="20,16"
BorderBrush="{ThemeResource SystemControlForegroundBaseLowBrush}"
Content="{x:Bind MasterListView.SelectedItem, Mode=OneWay}"
ContentTemplate="{StaticResource DetailContentTemplate}" />
</Grid>
但是,RemoveCommand 命令存在于页面视图模型中,而不是ListItemViewModel,我似乎无法从DataTemplate 的ContentPresenter 中找到引用它的方法。
请有人建议如何从 DataTemplate 中引用父上下文?
【问题讨论】:
标签: c# uwp uwp-xaml master-detail