wpf - WPF 中数据绑定(bind)时 "unavailable"值的模式

标签 wpf data-binding mvvm

在 WPF 中进行数据绑定(bind)时显示“不可用”值的典型模式是什么?

例如我正在使用 MVVM 和 TextBlock我 View 中的 s 绑定(bind)到我的 View 模型的属性,其中一些是 int s。有时我想在我的 View 中临时显示两个破折号(“--”)而不是属性值。

我可以将属性更改为字符串,然后在 getter 中添加一些逻辑来指定它是返回值还是“--”。这可能是使用 MVVM 的合适方法,但有没有更简单的方法?

有没有办法利用 TextBlockFallbackValue ?或者是否有另一种方法可以暂时暂停数据绑定(bind)并显示“不可用”值?

最佳答案

FallbackValue仅在无法解析绑定(bind)路径或转换器返回 DependencyProperty.UnsetValue 时使用.在进行 MVVM 时,通常会避开转换器。我的建议是拥有两个属性,一个包含 int值和一个包含显示值的值:

public int SomeValue
{
    get { return _someValue; }
    set
    {
        if (_someValue != value)
        {
            _someValue = value;
            OnPropertyChanged("SomeValue");
            OnPropertyChanged("SomeValueDisplay");
        }
    }
}

public string SomeValueDisplay
{
    get { return _someValue == -1 ? "--" : _someValue.ToString(); }
}

这为您提供了两全其美的体验。您的 VM 逻辑适用于 int属性(property),但您的 TextBlock直接绑定(bind)到 string底层证券的表示int .

关于wpf - WPF 中数据绑定(bind)时 "unavailable"值的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1235799/

相关文章:

WPF在资源字典中引用样式并使用触发器

c# - ContentControl 在通过 UI 自动化测试启动应用程序时不可见,但在用户启动应用程序时可见

wpf - 当 SelectedValue 不属于 ItemsSource 时,会自动从 ComboBox 中清除它

c# - 使用 TabControl 和 MVVM 在 WPF 中正确进行数据绑定(bind)

c# - WPF ListView SelectedItems 数据绑定(bind) MVVM

javascript - SAPUI5数据绑定(bind)获取更改事件中更改的值

c# - 使用 LINQ 过滤 DirectoryInfo 的 ObservableCollection

c# - DataGrid不会立即更新

c# - Prism.Navigation.INavigationService,是一个接口(interface),无法构造

wpf - 使用我的自定义面板设置 ItemsControl 中的项目的附加属性在 WPF 中不起作用