2012-02-24 4 views
2

私はDataGridColumnsがグリッドの論理ツリーでもビジュアルツリーでもないことを知っています。私はhereのようにプロキシを使用しています。WPFで2つのDataGridColumns幅をバインドする方法は?

いくつかの列の幅をバインドする必要があります。私は通常このようなバインディングを使用します:

Width="{Binding ActualWidth, ElementName=LastOperationColumn} 

しかし、それは動作しません。どのようにこれを行う上の任意のアイデア?私はちょうど私がMaxWidthの設定だし、私はそれは同じであるべきだと思ういくつかのコードを見てWidth="{Binding Path=ActualWidth,ElementName=LastOperationColumn}"

答えて

2

、彼らはそれらのバインディングのために必要とされるいかなる名前スコープを持っていません。ただしSourcex:Referenceを使用することができます。

{Binding ActualWidth, Source={x:Reference LastOperationColumn}} 

はもちろん、これは、このコラムを手動でサイズ変更された場合に結合が破壊されていることは変わりません。

+0

定形サイズなので全く問題ありません。ありがとう。 –

+0

Mmm ...既知の欠陥であると思われるものがあります。エラーサービスプロバイダにINameResolverサービスがありません。 –

+0

@SoMoS:それは実行時に私のために働いたので、私はguiデザイナーのエラーであると思うでしょう、あなたはそれを実行できますか? –

0

はこれを試してみてください。ここで私が使った構文があります。彼らは視覚的または論理ツリー内のオブジェクトではありませんので、あなたは、DataGrid列にElementNameを使用することはできません

<DataGridTextColumn...  
    MaxWidth="{Binding Source={x:Static Properties:Settings.Default}, 
              Mode=OneWay, 
              Path=DescriptionMaxWidth}"> 
+1

私はすでにこのバインディングを使用しています。 PathはBindingのデフォルトのプロパティです...それは全く機能しません。 –

+0

それは-1に値しませんでした。私は0に戻るために+1をくれました。 – Paparazzi

+1

@バラムバラム:どうしてですか?新しいことは何も言わず、役に立たない。 –

1

+0

いいえ、1つの列を別の列にバインドする必要があるため、同じではありません。これは、1つの列を設定にバインドするのとは異なります。 –

+0

これは私のシナリオでは意味がないという意味です。ラフにする必要はありません。良い一日を。 –