2

アイテムの幅と高さをモデルにバインドしたい。

一部のアイテムでは幅と高さが指定されていますが、それらのほとんどは「自動」モードに設定する必要があります。

だから私はプロパティを持つモデルを作成しました:

    public double? Height
    {
        get
        {
            return this.height;
        }

        set
        {
            this.height = value;
            this.OnPropertyChanged("Height");
        }
    }

そして、私はそれを私の見解に結びつけます。

高さ == nullの場合、コントロールのサイズは自動に設定されており、これで問題ありません。しかし、私には例外があります:

    System.Windows.Data Error: 5 : Value produced by BindingExpression is not valid for target property.; Value='<null>' BindingExpression:Path=Height;
target property is 'Height' (type 'Double')

コントロールの高さを「自動」に設定し、例外の生成を回避するにはどうすればよいですか?

4

2 に答える 2

1

Height プロパティにバインドして、ValueConverter を使用できます。インターフェイス IValueConverter を実装し、バインディングに追加します。このようにして、無効な値がある場合に「auto」を返すことができます。

これはあなたのxamlにあるはずです

<res:HeightConverter x:key=HeightConverter/>

<label height="{Binding MyHeight, ValueConverter={StaticResource HeightConverter}"/>

そして、これはあなたのコンバーターで

Public Class HeightConverter : IValueConverter ......

if(value = Nothing){Return "auto"}

頭から出てきたコードだけなので、構文の問題は気にしませんが、基本的にはそれだけです

これを使用して、一部の超過値を変更およびオーバーライドすることもできます。多くの柔軟性を提供します

于 2013-04-11T14:41:19.350 に答える