У меня проблема с обновлением привязки при изменении свойства привязки.Посмотрите на код ниже.Я объясню свою проблему в следующем примере.
public class SettingsControl : INotifyPropertyChanged
{
string _value = "test";
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
public SettingsControl() { }
public string Value
{
get { return _value; }
set { _value = value; OnPropertyChanged("Value"); }
}
}
<local:SettingsControl x:Key="Settings"></local:SettingsControl>
<TextBox Height="72" Text="{Binding Value, Mode=TwoWay, Source={StaticResource Settings} }"/>
<TextBlock Text="{Binding Value, Mode=OneWay, Source={StaticResource Settings} }" VerticalAlignment="Top" Width="135" />
<Button Height="100" Click="button1_Click" />
и код позади:
private void button1_Click(object sender, RoutedEventArgs e)
{
SettingsControl settings = new SettingsControl();
settings.Value = "new value";
}
Теперь, когда я изменяю текст в TextBox
, все работает просто отлично.Новый текст отображается в TextBlock
.Но если я установлю новый текст в коде на settings.Value
, то ничего не произойдет.
Что я должен сделать, чтобы изменить settings.Value
в коде и повлиять на TextProperty
в TextBlock
.
РЕДАКТИРОВАТЬ: Решение ниже для тех, кто имел ту же проблему, что и я:
SettingsControl settings = (SettingsControl)this.Resources["Settings"];
settings.Value = "new value";