【问题标题】:WPF - Converter hides dependency on a DependencyPropertyWPF - 转换器隐藏对 DependencyProperty 的依赖
【发布时间】:2009-12-29 22:22:57
【问题描述】:

如果我的 ViewModel 中的 DependencyProperty 设置为 Visiblity.Hidden,我有一个 TextBlock(实际上是一大堆 TextBlock),我将 Text 设置为“”。我通过转换器执行此操作,如下所示:

<TextBlock Margin="0,0,5,0">
  <TextBlock.Text>
    <Binding Converter="{StaticResource GetVisibilityOfColumnTitles}"
             Path="Name" />
  </TextBlock.Text>
</TextBlock>

转换器如下所示:

public object Convert(object value, Type targetType, 
                      object parameter,System.Globalization.CultureInfo culture)
{
    if (MainMediator.Instance.VisibilityOfWorkItemColumnTitles 
        == Visibility.Visible)
        return value;
    else
        return "";     
}

我承认这样做有点复杂,但我有我的理由(DataContext 复杂性和 TextBlock 的间距)

我遇到的问题是,当 VisibilityOfWorkItemColumnTitles 更改时,即使它是依赖属性,TextBlock.Text 也没有意识到那里存在依赖(因为它在转换器中使用)。

在后面的代码中(最好在转换器中)有没有办法说,这个 TextBlock 想要在 VisibilityOfWorkItemColumnTitles 发生变化时更新这个绑定?

【问题讨论】:

    标签: wpf data-binding binding


    【解决方案1】:

    由于您的转换器依赖于 TextBox 的 Text 属性和 MainMediator 类的 VisibilityOfWorkItemColumnTitles 属性,您可能需要使用 MultiBinding 并将这两个属性重新包含在 XAML 中。

    <TextBlock Margin="0,0,5,0"> 
        <TextBlock.Text> 
            <MultiBinding Converter="{StaticResource GetVisibilityOfColumnTitles}">
                <Binding Path="Name" />
                <Binding Path="VisibilityOfWorkItemColumnTitles" Source="{x:Static my:MainMediator.Instance}" />
            </MultiBinding> 
        </TextBlock.Text> 
    </TextBlock> 
    

    (我在该代码示例中使用“my”作为 MainMediator 类的 XML 命名空间。)

    然后将您的转换器更改为 IMultiValueConverter,并为文本和 values1 的“可见性”属性引用 values[0]。现在绑定将知道任一属性是否发生变化,并适当地调用转换器。

    【讨论】:

    • 这是个好主意。问题是 VisibilityOfWorkItemColumnTitles 在我的 MainMediator 类(ViewModel)中,而 Name 不在(它是列表框中的一个项目(实际上是子项目))。我怎样才能在不弄乱数据上下文的情况下找到中介(这是我提到的 DataContext 并发症)。
    • 啊,源是干什么用的?我会试一试。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-12-20
    • 2023-03-08
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    相关资源
    最近更新 更多