次のスニペットでは、INotifyPropertyChanged は常に null です。
xaml:
<TextBlock
Name="tbkContent"
Text="{Binding Path= value,Mode=TwoWay}"
TextWrapping="Wrap"
FontSize="22"
HorizontalAlignment="Center"
VerticalAlignment="Center"
TextAlignment="Center"
Foreground="White"
Height="100"
Width="400" />
CS:
// ...
TextContent content = new TextContent();
// ...
public class TextContent:INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
private string _value;
public string value
{
get
{
return _value;
}
set
{
_value = value;
this.NotifyPropertyChanged("value");
}
}
}
// ...
private void BindingImages(int ImgId)
{
switch (ImgId)
{
case 1:
content.value = "binding1";
break;
case 2:
content.value = "binding2";
break;
case 3:
content.value = "binding3";
break;
default:
content.value = "binding4";
_incrID = 0;
break;
}
DoTransitions(ImgBg);
}
TextblockValue が割り当てられることはありません。これは常に null です
if (PropertyChanged != null) // <-----null here
{
}
Textblock のテキストが適切に更新されていません。
最後に、私は自分で手に入れました。以下はトリックを行いました
スイッチ (ImgId) {
case 1:
_textcontent = new TextContent();
_textcontent.content = "binding1";
tbkContent.DataContext = _textcontent;
break;
case 2:
_textcontent = new TextContent();
_textcontent.content = "binding2";
tbkContent.DataContext = _textcontent;
break;
case 3:
_textcontent = new TextContent();
_textcontent.content = "binding3";
tbkContent.DataContext = _textcontent;
break;
default:
_textcontent = new TextContent();
_textcontent.content = "binding4";
tbkContent.DataContext = _textcontent;
_incrID = 1;
break;
}
私はdatacontextプロパティの設定を逃しました..ありがとうございました