とブール式への結合私は、彼らの値に基づいて、このような何かを画像を表示したい2つのブール値を持っています。WPF可視性は、複数の変数
1
A
答えて
7
は、XAMLで定義された&&
演算子がありませんが、あなたはIMultiValueConverter
いくつかのプロパティにバインドし、使用することができます
<Image>
<Image.Visibility>
<MultiBinding Converter="{StaticResource YourMultiConverter}">
<Binding Path="Boolean1" />
<Binding Path="Boolean2" />
</MultiBinding>
</Image.Visibility>
</Image>
public class YourMultiValueConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
bool a = (bool)values[0];
bool b = (bool)values[1];
return a && b ? Visibility.Visible : Visibility.Collapsed;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
それとも条件でImage
スタイルを使用することができます
<Image>
<Image.Style>
<Style TargetType="Image">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Boolean1}" Value="True" />
<Condition Binding="{Binding Boolean2}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="Visibility" Value="Visible" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
0
多値コンバータを使用すると、この問題を解決することができます
XAML:
<TextBlock Name="textBlockOutput" Grid.Row="4" Grid.Column="2">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource MultiValueConverter}">
<Binding Path="TextOne" />
<Binding Path="TextTwo" />
<Binding Path="TextThree" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
public class MultiValueConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
string one = values[0] as string;
string two = values[1] as string;
string three = values[2] as string;
if(!string.IsNullOrEmpty(one) && !string.IsNullOrEmpty(two) && !string.IsNullOrEmpty(three))
{
return one + two + three;
}
return null;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
+0
あなたの答えは正しいですが、なぜこれが修正されたのかについてのより良い説明がこれを答えとして改善するでしょう – MikeT
0
MM8は、正しい答えを提供してきたがしかし、若干の改善が、これは、あなたが複数のコンバー
<local:LogicalAndConverter x:Key="LogicalAndConverter ">
<local:LogicalAndConverter.FinalConverter>
<BooleanToVisibilityConverter />
</local:LogicalAndConverter.FinalConverter>
</local:LogicalAndConverter>
書き換えアウトと異なるコンバータを使用して行うことができます。この
public class LogicalAndConverter : IMultiValueConverter
{
public IValueConverter FinalConverter{get;set;}
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
bool rtn = values.All(v=>(bool)v);
if(FinalConverter==null)
return rtn;
else
FinalConverter.Convert(rtn,targetType,parameter,culture);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
だろう
関連する問題
- 1. 複数のBoolをWPFの可視性コンバータに変換する
- 2. 複雑なINTから複数のWPF可視性への変換
- 3. カテゴリ。変数の可視性
- 4. 関数の変数のJS可視性
- 5. 可視性変数はJavascriptを
- 6. WPF - SharedSizeGroup +可視性
- 7. Asmxプライベート変数の可視性
- 8. MXMLモジュールと変数の可視性
- 9. WPFスプリッタの可視性
- 10. WPF TreeViewItemトグルボタンの可視性
- 11. WPFのDataGrid RowDetails可視性
- 12. 複数のURLの連続可用性の可視化
- 13. C++の並行性:mutex以外での変数の可視性
- 14. 可能性の重複変数
- 15. このコードの変数の可視性エラーは何ですか?
- 16. WPFでの実際の可視性
- 17. WPFアプリケーションの可視性のリモートデスクトップ
- 18. JavaFX:プライマリステージの可視性と複数の独立したステージ
- 19. WPF Foreach行の可視性セット
- 20. WPFでの可視性の現在のプロパティを変更する
- 21. ViewModelからWPFコントロールの可視性を変更する方法
- 22. config.rbとpagesの中規模変数の可視性
- 23. ブロックハンドラ内の変数の可視性(有効範囲)
- 24. インスタンシエートされたオブジェクト変数の可視性
- 25. グリッドが複数のグリッドから可視
- 26. 複合WPF:グローバル変数?
- 27. 複雑なカスタムコントロールとプロパティの可視性
- 28. C++変数の可視化メモリ
- 29. Bash。可変可視性と生涯
- 30. $で複数の変数の変化を監視する方法
バインディングパスはこの種の式をサポートしていません。ビューモデル 'pu blicブールBoolean3 {get {return Boolean1 && Boolean2; }} 'そしてブール3にバインドする – ASh
そのインラインのようなことをするためにB-e-t-t-e-r-簡単な方法が必要ですか? – Stacker
マルチバインディングとマルチバリュー・フォンダーを使用する必要があります。http://www.codearsenal.net/2013/12/wpf-multibinding-example.html#.WKrPW_LNjMM – MikeT