2016-07-01 15 views
3

バインドされたオブジェクトの値に基づいてImage要素のプロパティを変更する必要があります。バインドされた値に基づいて要素のプロパティを変更します。

私は、画像要素があります:Thing.OtherProperty = true場合

<Image Source="{Binding Thing.Url}" Stretch="UniformToFill" HorizontalAlignment="Left"/> 

を、私はImage要素にHorizontalAlignment="Center"を追加したいです。

注:Image要素は、アプリケーションのさまざまな場所で使用されるDataTemplateにあります。

これを達成する最も良い方法は何ですか?あなたはブールに基づいHorizontalAlignmentプロパティを変更したいあなたのケースではBinding Converter

を使用する場所

答えて

4

です。 あなたは変換ロジックを記述しますIValueConverterを実装するクラスを作成することができ最初の必要性:

public class AlignmentConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     if ((bool)value) 
      return Windows.UI.Xaml.HorizontalAlignment.Center; 

     return Windows.UI.Xaml.HorizontalAlignment.Left; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     throw new NotImplementedException(); 
    } 
} 

あなたはおそらくあなたが今までにはない性質にこれをバインドする場合のビットより良いエラーを処理する必要があります*ブール

リソースとしてコンバータを宣言...あなたはページ

xmlns:converters="using:*yournamespace*" 

の上部にあなたのcoverters名前空間をインポートする必要があり、これを使用するには:

<converters:AlignmentConverter x:Key="HorizontalAlignmentConverter"/> 

...とあなたの結合

<Image Source="{Binding Thing.Url}" Stretch="UniformToFill" HorizontalAlignment="{Binding Thing.OtherProperty, Converter={StaticResource HorizontalAlignmentConverter}"/> 
にパラメータとしてそれを使用します
関連する問題