は私がブール値にバインドされたイメージを持ちたいとブール値に依存する画像のソースを持っている私があれば思っていた=「画像2」バインドImage.Sourceはコンバータなしのブール値に従っていますか?
すなわち真の源=「画像1」偽ソースコンバータを必要とせずにインラインで行う方法があります。
は私がブール値にバインドされたイメージを持ちたいとブール値に依存する画像のソースを持っている私があれば思っていた=「画像2」バインドImage.Sourceはコンバータなしのブール値に従っていますか?
すなわち真の源=「画像1」偽ソースコンバータを必要とせずにインラインで行う方法があります。
DataTriggerを使用してバインディングに応じてイメージソースをスワップするスタイルをイメージに作成できます。この例では、イメージは単純に "値"と呼ばれるブール値の値に応じて変化します。
<Image Width="16">
<Image.Style>
<Style TargetType="{x:Type Image}">
<Style.Triggers>
<DataTrigger Binding="{Binding Value}" Value="False">
<Setter Property="Source" Value="Resources/image1.png"/>
</DataTrigger>
<DataTrigger Binding="{Binding Value}" Value="True">
<Setter Property="Source" Value="Resources/image2.png"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
Image::Source
プロパティを直接バインドする場合は、これを実現する唯一の方法はカスタムIValueConverter
です。
誰かがバインディングのバリューコンバータを探している場合。ここで私は、適切な画像を結合するViewModelに、コンバータから
<Image Source="{Binding Converter={StaticResource ImageConverter},ConverterParameter=\{Status\}}" />
public class StatusToImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string statusValue = parameter.ToString().ToUpper();
if (!string.IsNullOrEmpty(statusValue))
{
string result = string.Empty;
switch (statusValue)
{
case "IDLE":
result = "idle.png";
break;
case "OFFLINE":
result = "offline.png";
break;
default:
result = "online.png";
break;
}
var uri = new Uri("pack://application:,,,/PIE;component/Images/" + result);
return uri;
}
return string.Empty;
}
// No need to implement converting back on a one-way binding
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return DependencyProperty.UnsetValue;
}
}
有界列挙
public enum DevStatus
{
Idle = 1,
Offline = 2,
Active = 3,
}
enumセットを使用したものです。
<Image Source="{Binding DevStatus, Converter={StaticResource ImageConverter}}" />
ConverterParameter = \ {Status \}の部分について説明してください。私の場合 – user3841581
その列挙値パブリック列挙DeviceStatus { アイドル= 1、 オフライン= 2、 アクティブ= 3、 } – dnxit
<イメージソース= "{DevStatus結合、コンバータ= {StaticResource ImageConverter}}" /> – dnxit
これは、異なる要素のプロパティに対して機能しますか?たとえば、ラベルの値に基づいてイメージをバインドする場合、同じ方法で動作しますか?あなたは詳しく説明できますか? – user3841581