0

我想根据绑定设置 TextBox 元素的可见性。
示例:具有两种产品价格值的文本框

<TextBox Grid.Column="1" Grid.Row="3" Text="{Binding PriceProduct0, Mode=TwoWay}" />
<TextBox Grid.Column="2" Grid.Row="3" Text="{Binding PriceProduct1, Mode=TwoWay}" />

在我的模型中,我从 WCF 服务中查询必要的值并调用 NotifyPropertyChanged 来更新我的视图。
问题:在某些情况下,我的属性没有值。在这种情况下,我想隐藏 UI 元素。有没有简单的方法,也许是通过引发一个事件?

大多数属性都是双精度或布尔值,所以我不能将它们设置为 NULL。

解决方案:
我找到了解决方案,感谢 Ahmed 和 DHN!
这里的所有步骤:

  1. 将所有不可为空的属性更改为可空值,例如 public double? PriceProduct0
  2. 如果找不到命名空间,请添加对以下 .dll 的引用 Microsoft.TeamFoundation.Controls.WPF.Converters
    <VSHome>\Common7\IDE\PrivateAssemblies\Microsoft.TeamFoundation.Controls.dll
  3. 添加xmlns:myConverters="clr-namespace:Microsoft.TeamFoundation.Controls.WPF.Converters;assembly=Microsoft.TeamFoundation.Controls"<Page>属性
  4. 添加 <Page.Resources>
    <myConverters:NullToVisibleConverter x:Key="NullToVisibleConverter" />
    </Page.Resources>
  5. 将以下可见性参数添加到<TextBox>属性:
    Visibility="{Binding PriceProduct0, Converter={StaticResource NullToVisibleConverter}, ConverterParameter='invert' }"
4

2 回答 2

4

您可以使用 null 到可见性转换器。看到这个链接

<TextBox Text="{Binding PriceProduct0}" Visibility="{Binding PriceProduct0, Mode=TwoWay, Converter={StaticResource NullToVisibilityConverter}}"/>
于 2013-05-27T08:32:01.517 回答
1

没有比这更容易的了。只需一个NullToVisibleConverter并将其绑定到VisibilityUI 元素的属性。例如

<Window>
    <Window.Resources>
        <NullToVisibleConverter x:Key="Null2VisConv"/>
    </Window.Resources>
<TextBox Visibility="{Binding PriceProduct0, Converter={StaticResource Null2VisConv}}" .../>
</Window>
于 2013-05-27T08:31:45.460 回答