PropertyChanged 未在用户控件中更新 UI - 通用应用
PropertyChanged not updating UI in user control - universal app
在我的应用程序中,我有一个具有以下 XAML 段的用户控件
<StackPanel x:Name="stackPanel" Style="{StaticResource sPanel1}" >
<ToggleButton Style="{StaticResource tButton}">
<TextBlock Text="{Binding Note, Mode=TwoWay}" Style="{StaticResource textBlockStyle}"/>
</ToggleButton>
</StackPanel>
在 TextBlock
中绑定的 'Note' 在我的模型中定义如下:
private string m_Note;
public string Note
{
get { return m_Note; }
set
{
m_Note = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("m_Note"));
}
}
当来自我的用户控件代码隐藏的事件处理程序触发事件时,'Note' 属性 更新:
public void cBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
cm.Note = cBox.SelectedItem.ToString();
}
但是每次我 select ComboBox 中的项目时 UI 都不会更新。我知道绑定是正确的,因为当我在模型的构造函数中初始化 'Note' 时,它确实在 UI 中显示了它的值,而且我知道 'Note' 获得了 cBox.SelectedItem
值因为我已经遍历了代码。我错过了什么?
View中的绑定路径和方式正确。这就是为什么您在初始化时获得值的原因。然而,您的绑定 属性 并未在 属性 上引发正确的 属性 名称更改。 UI 正在监听 Note
但你正在加注 m_Note
。
您需要更新到
private string m_Note;
public string Note
{
get { return m_Note; }
set
{
m_Note = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Note"));
}
}
在我的应用程序中,我有一个具有以下 XAML 段的用户控件
<StackPanel x:Name="stackPanel" Style="{StaticResource sPanel1}" >
<ToggleButton Style="{StaticResource tButton}">
<TextBlock Text="{Binding Note, Mode=TwoWay}" Style="{StaticResource textBlockStyle}"/>
</ToggleButton>
</StackPanel>
在 TextBlock
中绑定的 'Note' 在我的模型中定义如下:
private string m_Note;
public string Note
{
get { return m_Note; }
set
{
m_Note = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("m_Note"));
}
}
当来自我的用户控件代码隐藏的事件处理程序触发事件时,'Note' 属性 更新:
public void cBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
cm.Note = cBox.SelectedItem.ToString();
}
但是每次我 select ComboBox 中的项目时 UI 都不会更新。我知道绑定是正确的,因为当我在模型的构造函数中初始化 'Note' 时,它确实在 UI 中显示了它的值,而且我知道 'Note' 获得了 cBox.SelectedItem
值因为我已经遍历了代码。我错过了什么?
View中的绑定路径和方式正确。这就是为什么您在初始化时获得值的原因。然而,您的绑定 属性 并未在 属性 上引发正确的 属性 名称更改。 UI 正在监听 Note
但你正在加注 m_Note
。
您需要更新到
private string m_Note;
public string Note
{
get { return m_Note; }
set
{
m_Note = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Note"));
}
}