編集可能なラベルコントロールを使用します(テンプレートプロパティがオーバーライドされたラベル。そこに表示される完全なコード:http://www.nathanpjones.com/wp/2012/09/editable-label-in-wpf/)。
このスタイルで独自のラベル制御クラスを作成します。EditableLabelControlクラスはLabelクラスを拡張するため、EditableLabelControlにはContentプロパティがあります。
public partial class EditableLabelControl : Label
{
//...
}
その後、この編集可能なラベルをカスタムコントロールに配置し、モデルのMyValueプロパティにバインドします。
<controls:EditableLabelControl Content="{Binding Path=MyValue, Mode=TwoWay}" />
モデル値は正しく表示されますが、テキストボックスで編集すると、Contentプロパティのみが更新されます(モデルのMyValueプロパティは更新されません)。
テキストボックス用のLostFocusハンドラーを作成しようとしましたが、役に立ちません。
var bindingExpression = ((TextBox)sender).GetBindingExpression(TextBox.TextProperty);
if (bindingExpression != null)
{
bindingExpression.UpdateSource();
}
私の間違いはどこにありますか?答えてくれてありがとう、そして私の悪い英語をお詫びします。