Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按模型值设置图元可见性_C#_Wpf_Binding_Visibility - Fatal编程技术网

C# 按模型值设置图元可见性

C# 按模型值设置图元可见性,c#,wpf,binding,visibility,C#,Wpf,Binding,Visibility,我想根据文本框元素的绑定设置它们的可见性。 例子: 带有两种产品价格值的文本框 <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服务查询必要的值,并调用N

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

<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元素。有没有一个简单的方法,也许是举办一个活动

大多数属性都是double或boolean,所以我不能将它们设置为NULL

解决方案:
多亏了艾哈迈德和DHN,我找到了解决办法
以下是所有步骤:

  • 将所有不可为null的属性更改为可为null,例如。
    public-double?价格产品0
  • 如果找不到命名空间,请添加对以下.dll的引用
    Microsoft.TeamFoundation.Controls.WPF.Converters

    \Common7\IDE\privatepassemblies\Microsoft.TeamFoundation.Controls.dll
  • xmlns:myConverters=“clr命名空间:Microsoft.TeamFoundation.Controls.WPF.Converters;assembly=Microsoft.TeamFoundation.Controls”
    添加到
    属性中


  • 将以下可见性参数添加到
    属性:
    Visibility=“{Binding PriceProduct0,Converter={StaticResource NullToVisibleConverter},ConverterParameter='invert'}”

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

    <Window>
        <Window.Resources>
            <NullToVisibleConverter x:Key="Null2VisConv"/>
        </Window.Resources>
    <TextBox Visibility="{Binding PriceProduct0, Converter={StaticResource Null2VisConv}}" .../>
    </Window>
    

    没有比这更简单的了。只需一个
    NullToVisibleConverter
    ,并将其绑定到UI元素的
    Visibility
    属性。例如

    <Window>
        <Window.Resources>
            <NullToVisibleConverter x:Key="Null2VisConv"/>
        </Window.Resources>
    <TextBox Visibility="{Binding PriceProduct0, Converter={StaticResource Null2VisConv}}" .../>
    </Window>
    

    您可以使用空到可见性转换器。看到这个了吗


    您可以使用空到可见性转换器。看到这个了吗

    
    
    谢谢Ahmed和DHN,但我的属性大多是双精度或布尔值。因此,我不能将它们设置为NULL,或者我理解错了什么吗?通过将它们更改为可为NULL的属性(参见我的帖子)找到了解决方案,感谢Ahmed和DHN,但我的属性大多是双精度或布尔值。因此,我不能将它们设置为NULL,或者我理解错了什么?通过将它们更改为可为NULL的属性找到了解决方案(参见我的帖子)