2011-10-30 18 views
2

を更新されていないバインディング値を開始値(この場合は400)に設定します。依存関係プロパティは、次のように私は依存関係properyを定義している

私はこのプロパティにUIのグリッドの列をバインドしました。

<ColumnDefinition 
    Name="ProductInfo" 
    Width="{Binding Path=AnimateColumnWidth, 
        Converter={StaticResource doubleToGridLength}, 
        Mode=TwoWay}" /> 

私が理解しているように、列の幅がこのプロパティにバインドされると、プロパティを更新するたびに列の幅も更新されます。

プロパティを変更すると、幅が更新されないので、私は間違って何をしていますか?私もアニメーションを介してそれを更新しようとしています。さらに、AnimateColumnWidthプロパティのゲッターに設定されたブレークポイントは決してヒットしません。つまり、プロパティを取得しようとしたことはありません。

(これには、明確に、私はどこかで何かが壊れている仕事でした!!)

脚注:

私のアプリのルート名前空間で定義されている変換された値は、(私はそれがcouldntの場合WPFは文句を言うだろうと信じていますそれを見つける)。

[ValueConversion(typeof(Double), typeof(GridLength))] 
public class DoubleToGridLength : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return new GridLength((double)value); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return ((GridLength)value).Value; 
    } 
} 

答えて

0

私がしたことの一つは、グリッドのdatacontextが "this"に影響を与えたいと思っていた列です。

public MainWindow() 
{ 
    InitializeComponent(); 
    ProductsArea.DataContext = this; 
} 
5

あなたが「間違った」である"AnimateColumnWidthProperty"としての性質を、登録し、唯一のフィールド名が、あなたはおそらく"AnimateColumnWidth"任意たい(または、あなたはもちろんの結合を変更するが、そのまま、それはパスポイントので、失敗しました登録されていない財産に)。

また、デバッグ時に何かを読んで、bindingsを読んで、バインディングエンジンによって報告されるようなエラーを発見することができます。 (「オブジェクトxにプロパティxが見つかりません」など)。

ゲッターやセッターのブレークポイントを使用しても何も教えてくれません。バインディングエンジンはではありません。はそれらを使用しています。

+0

msdnデバッグバインディングリンクにリンクするための+1 –

+0

バインドに関するヒントがトリックでした。グリッドのデータコンテキストは設定されていませんでした。 – Remotec