即使 属性 是,绑定也不会更新
Binding Not Updating Even Though Property Is
我正在开发一个用户控件,它有几十个绑定(一些通过 DependencyProperties
,另一些通过使用 INotifyPropertyChanged
的属性),除了一个之外,所有这些都工作得很好。
在 XAML 我有:
<TextBox Grid.Row="5" Text="{Binding FilterPreview, RelativeSource={RelativeSource AncestorType={x:Type UserControl}},UpdateSourceTrigger=PropertyChanged}"/>
而 属性 本身是:
private string FilterPreview
{
get { return filterPreview; }
set
{
filterPreview = value;
OnPropertyChanged(nameof(FilterPreview));
}
}
但无论我将 FilterPreview
设置为什么,文本框 都不会显示任何值 。我什至添加了一个按钮,将 FilterPreview
设置为当前时间进行测试。当我添加断点时,我可以看到 FilterPreview
本身正在正确更新,但我无法弄清楚为什么该值没有显示在文本框中。
举个例子,XAML 中大约有 10 行,我有这一行:
<TextBlock Text="{Binding ShowAdvancedFilterBuilderButtonText, RelativeSource={RelativeSource AncestorType={x:Type UserControl}},UpdateSourceTrigger=PropertyChanged}"/>
与 属性:
public string ShowAdvancedFilterBuilderButtonText
{
get { return showAdvancedFilterBuilderButtonText; }
set
{
showAdvancedFilterBuilderButtonText = value;
OnPropertyChanged(nameof(ShowAdvancedFilterBuilderButtonText));
}
}
而且那个工作正常,即使它们基本上完全一样。我还应该提到,我尝试使用 TwoWay
作为 XAML 中的 Mode
属性,但 属性 没有更新值。我也尝试删除 RelativeSource
和 UpdateSourceTrigger
属性,但这也没有任何帮助。
如有任何建议或想法,我们将不胜感激。
您只能绑定到 public
属性,不能绑定到 private
属性。第二个示例中的 属性 是 public
,这就是它起作用的原因。相应地更改 FilterPreview
属性 访问修饰符。
public string FilterPreview
{
get { return filterPreview; }
set
{
filterPreview = value;
OnPropertyChanged(nameof(FilterPreview));
}
}
我正在开发一个用户控件,它有几十个绑定(一些通过 DependencyProperties
,另一些通过使用 INotifyPropertyChanged
的属性),除了一个之外,所有这些都工作得很好。
在 XAML 我有:
<TextBox Grid.Row="5" Text="{Binding FilterPreview, RelativeSource={RelativeSource AncestorType={x:Type UserControl}},UpdateSourceTrigger=PropertyChanged}"/>
而 属性 本身是:
private string FilterPreview
{
get { return filterPreview; }
set
{
filterPreview = value;
OnPropertyChanged(nameof(FilterPreview));
}
}
但无论我将 FilterPreview
设置为什么,文本框 都不会显示任何值 。我什至添加了一个按钮,将 FilterPreview
设置为当前时间进行测试。当我添加断点时,我可以看到 FilterPreview
本身正在正确更新,但我无法弄清楚为什么该值没有显示在文本框中。
举个例子,XAML 中大约有 10 行,我有这一行:
<TextBlock Text="{Binding ShowAdvancedFilterBuilderButtonText, RelativeSource={RelativeSource AncestorType={x:Type UserControl}},UpdateSourceTrigger=PropertyChanged}"/>
与 属性:
public string ShowAdvancedFilterBuilderButtonText
{
get { return showAdvancedFilterBuilderButtonText; }
set
{
showAdvancedFilterBuilderButtonText = value;
OnPropertyChanged(nameof(ShowAdvancedFilterBuilderButtonText));
}
}
而且那个工作正常,即使它们基本上完全一样。我还应该提到,我尝试使用 TwoWay
作为 XAML 中的 Mode
属性,但 属性 没有更新值。我也尝试删除 RelativeSource
和 UpdateSourceTrigger
属性,但这也没有任何帮助。
如有任何建议或想法,我们将不胜感激。
您只能绑定到 public
属性,不能绑定到 private
属性。第二个示例中的 属性 是 public
,这就是它起作用的原因。相应地更改 FilterPreview
属性 访问修饰符。
public string FilterPreview
{
get { return filterPreview; }
set
{
filterPreview = value;
OnPropertyChanged(nameof(FilterPreview));
}
}