バインディングに基づいて TextBox 要素の可視性を設定したいと考えています。
例: 2 つの商品の価格値を含むテキスト ボックス
<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 を設定することはできません。
解決策:
Ahmed と DHN のおかげで解決策が見つかりました!
ここですべての手順:
- null 非許容プロパティをすべて null 許容に変更します。
public double? PriceProduct0
- 名前空間が見つからない場合は、次の .dll への参照を追加します
Microsoft.TeamFoundation.Controls.WPF.Converters
。
<VSHome>\Common7\IDE\PrivateAssemblies\Microsoft.TeamFoundation.Controls.dll
- 属性
xmlns:myConverters="clr-namespace:Microsoft.TeamFoundation.Controls.WPF.Converters;assembly=Microsoft.TeamFoundation.Controls"
に追加<Page>
- 追加
<Page.Resources>
<myConverters:NullToVisibleConverter x:Key="NullToVisibleConverter" />
</Page.Resources> <TextBox>
次の可視性パラメーターを属性に追加します。
Visibility="{Binding PriceProduct0, Converter={StaticResource NullToVisibleConverter}, ConverterParameter='invert' }"