を実装する必要がありますCompany
プロパティが変更された場合は、次の変更を行う必要があります。
x:Bind
のデフォルトモードがOneTime
であるため、の値が設定されていると、それは決して更新されないので、Mode=OneWay
をMasterDetailPage に追加してください。
<TextBlock Grid.Row="1"
Text="{x:Bind Company, Mode=OneWay}"
Style="{StaticResource ListSubTitleStyle}" />
あなたOrder
クラスは、それ以外の変更は、UIに作ることは決してありませんINotifyPropertyChanged
を実装する必要があります。あなたのTextBox
で
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));
}
}
あなたは は、すべてのキーダウンで更新をトリガしたい原因は、結合」で UpdateSourceTrigger=PropertyChanged
が必要になります。残念ながらx:Bind
では がサポートされていないので、 伝統的なBinding
を使用するように戻る必要があります。変更したら、 にはUserControl
の名前(例:Self
)を指定する必要がありますので、 ElementName
を使用して同じバインディング式( MasterMenuItem.Company)を見つけることができます。
<UserControl x:Class="App2.Views.MasterDetailDetailControl"
...
x:Name="Self">
<TextBox Text="{Binding MasterMenuItem.Company, ElementName=Self, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
/>
今、あなたのアプリケーションを実行し、それがうまく動作するはずです。 :)
@ジャスティンXL助けてください – Vincent