使用UWP主详细信息更改详细信息项

使用UWP主详细信息更改详细信息项,uwp,uwp-xaml,Uwp,Uwp Xaml,我正在学习并使用“Windows模板工作室”创建一个主细节项目 现在我想更改细节,并希望在主控中显示更改。 如下 但我不知道怎么做? 我已经将示例代码上传到GitHub。 任何人都可以更改示例代码,非常感谢 绑定到主视图的Order项需要通知视图属性更改,因此应该实现INotifyPropertyChanged 为了在公司属性更改时自动更新列表上的公司字段,您需要进行以下更改- 您需要将Mode=OneWay添加到MasterDetailPage中的绑定中 因为x:Bind中的默认模式是On

我正在学习并使用“Windows模板工作室”创建一个主细节项目

现在我想更改细节,并希望在主控中显示更改。 如下

但我不知道怎么做? 我已经将示例代码上传到GitHub。


任何人都可以更改示例代码,非常感谢

绑定到主视图的
Order
项需要通知视图属性更改,因此应该实现
INotifyPropertyChanged


为了在
公司
属性更改时自动更新列表上的公司字段,您需要进行以下更改-

  • 您需要将
    Mode=OneWay
    添加到MasterDetailPage中的绑定中 因为
    x:Bind
    中的默认模式是
    OneTime
    ,即一次 该值已设置,将永远不会更新

    <TextBlock Grid.Row="1"
               Text="{x:Bind Company, Mode=OneWay}"
               Style="{StaticResource ListSubTitleStyle}" />
    
  • 文本框中,您需要
    
    UpdateSourceTrigger=PropertyChanged
    在绑定中,因为您需要 按每个键向下触发更新。不幸的是,事实并非如此 在
    x:Bind
    中受支持,因此您必须更改回使用 传统的
    绑定
    。注意:一旦您更改了它,您也将 需要给你的
    UserControl
    一个名字,比如说
    Self
    ,这样你就可以使用
    ElementName
    查找相同的绑定表达式(即。 MasterMenuItem.公司)

    
    


  • 现在运行你的应用程序,它应该可以正常工作。:)

    @Justin XL求救,Justin。我忘了第一步…哈哈
    public class Order: INotifyPropertyChanged
    {
        private string _company;
    
        public string Company
        {
            get => _company;
            set
            {
                if (_company == value) return;
    
                _company = value;
                OnPropertyChanged();
            }
        }
    
        public event PropertyChangedEventHandler PropertyChanged;
    
        [NotifyPropertyChangedInvocator]
        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
    
    <UserControl x:Class="App2.Views.MasterDetailDetailControl"
                 ...
                 x:Name="Self">
    
    <TextBox Text="{Binding MasterMenuItem.Company, ElementName=Self, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"