【问题标题】:Why binded value doesn`t show in the TextBlock? [closed]为什么绑定值不显示在 TextBlock 中? [关闭]
【发布时间】:2022-01-25 08:08:07
【问题描述】:

我尝试将字符串绑定到 TextBlock Text 属性,但值未显示在我的视图中。

xaml:

<TextBlock Margin="10,0" DataContext="{Binding UpgradeViewModel, Source={StaticResource Locator}}">
                <Run Text="Other features: " FontWeight="Bold"/>
                <Run Text="{Binding UpgradeViewModel.AdditionalSelectedLevelData, Source={StaticResource Locator}, 
                            Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
            </TextBlock>

查看模型:

private string additionalSelectedLevelData;
public string AdditionalSelectedLevelData
        {
            get => additionalSelectedLevelData;
            set
            {
                Set(ref additionalSelectedLevelData, value);
                Debug.WriteLine(value);
            }
        }

属性更改值,我使用 Debug.WriteLine(value); 进行检查

我已经实现了 INotifyPropertyChanged(Set(ref additionalSelectedLevelData, value);),将绑定模式设置为 TwoWay,设置 UpdateSourceTrigger=PropertyChanged。

我尝试添加 TextBox 并绑定到他的 Text 属性相同的字符串值,并获得相同的结果,但是当我在 TextBlock 和 TextBox 上显示文本框字符串时。我有任何想法。绑定路径正确 100%。

【问题讨论】:

  • 您已经在TextBlock 级别设置了DataContext,无需在Run 重复相同的操作。所以,只有属性名称就足够了。
  • 请说明你如何初始化additionalSelectedLevelData
  • @JesseGood 我为这个字段添加了初始化,值显示了,但没有改变。
  • @emoacht 我试试这个,得到一些结果
  • 请记住下次显示更多上下文。单独发布代码 sn-ps 永远无法帮助对您的代码不熟悉的人通过审查来“调试”它。始终发布重现错误的最小可行代码示例。创建此示例也有助于您自己识别问题。

标签: c# .net wpf data-binding


【解决方案1】:

我已经从 Run Text 中删除了 UpgradeViewModel,因为 TextBlock 已经绑定到它。出于同样的原因,还从 Run Text 中删除了静态资源。 只要INotifyPropertyChanged 正确实施并且ViewModel 定位器可以正常工作,那么它应该可以正常工作

<TextBlock Margin="10,0" DataContext="{Binding UpgradeViewModel, Source={StaticResource Locator}}">
    <Run Text="Other features: " FontWeight="Bold"/>
    <Run Text="{Binding AdditionalSelectedLevelData, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</TextBlock>

【讨论】:

  • 它不适合我:(
  • 您的“修复”在某种程度上是正确的,它简化了真正令人困惑的绑定。原始 Binding 以 Source 值而不是 DataContext 为目标,因此它可以工作。
  • 初学者请看下面的数据绑定视频youtu.be/w-GIskKhATw
【解决方案2】:

我创建了两次 ViewModel,我修复了它和问题 消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 2012-03-06
    • 1970-01-01
    相关资源
    最近更新 更多