【问题标题】:WPF Multibinding to View ModelWPF 多绑定到视图模型
【发布时间】:2014-04-02 20:24:27
【问题描述】:

我正在尝试将格式化的双精度值多重绑定到文本框。我有一个转换器,它接收一个双精度对象和一个 Formatter 对象,并返回一个要显示的格式化字符串。双精度绑定到特定的数据源,格式化程序是视图模型中的一个属性。我遇到的问题是我无法绑定到视图模型属性。这是我在 xaml 中的代码

    <StackPanel Grid.Row="0" Grid.Column="1">
      <TextBlock HorizontalAlignment="Left" Style="{StaticResource HintDataItemsStyle}">
        <TextBlock.Text>
         <MultiBinding Converter="{StaticResource FormatConverter}">
           <Binding Path="OpenValue" />
           <Binding Path="XLabelFormatterY1" />
         </MultiBinding>
        </TextBlock.Text>
      </TextBlock> 

这是视图模型中的属性

    private ILabelFormatter _labelFormatterY1;
    public ILabelFormatter XLabelFormatterY1
    {
        get { return _labelFormatterY1; }
        set
        {
            _labelFormatterY1 = value;
            OnPropertyChanged("XLabelFormatterY1");
        }
    }

因此,在我的转换器中,我可以获取“OpenValue”的值,但运行时无法找到 XLabelFormatterY1。我见过的大多数多绑定示例都绑定到 gui 组件。我正在尝试绑定到视图模型,希望得到所有帮助。

【问题讨论】:

  • DataContext 是否设置为 ViewModel 对象?检查 VS 中的输出窗口是否存在绑定错误?
  • 是的,数据上下文设置为视图模型对象。它能够绑定到视图模型中的其他属性,除了 Multibinding 中的属性。有没有办法在绑定标签中指定数据上下文?
  • 所有绑定都以相同的方式工作。 OnPropertyChanged 的​​绑定或参数中的属性名称拼写一定有问题。确保这两个一致,并且其中没有多余的非打印字符。此外,请确保这两个字符串与属性名称匹配。

标签: c# wpf xaml multibinding


【解决方案1】:

老问题,但没有答案。我相信您正在寻找this solution。如果此答案对您不起作用,请尝试在绑定中显式设置 NotifyOnSourceUpdated="True"。并且仔细检查你是否设置了正确的AncestorType,正如 wookietomwookie 在他的回答中所说的那样。

【讨论】:

    猜你喜欢
    • 2023-03-06
    • 2011-10-07
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 2011-02-20
    • 2018-10-25
    相关资源
    最近更新 更多