WPFアプリケーションを作成するためのより良い方法を見つけることのようなパターンは次のXAMLにかなりの量含まれています。我々は、UI部分のUserControlでグループ化されている、言い換えればは私が継承されてきた複雑なWPFのUI
<Window ...>
<Grid>
<z:SomeUserControl>
<z:AnotherUc>
<Label /> <Button /> <ComboBox />
</z:AnotherUc>
<z:AnotherUc>
<Label /> <Button /> <ComboBox />
</z:AnotherUc>
</z:SomeUserControl>
</Grid>
</Window>
を、多くの場合、他のUserControls内にネストされます。ある時点で、コンテンツは基本的なWPFコンテンツコントロールを使用して定義されます。
我々が対処しようとしている問題は、Xということです:Name属性は、悪名高いWPFの制限のために最も内側のコントロールのいずれにも適用することはできません。
これは、コードビハインドがUserControl内の要素を参照できる必要があるため、問題が発生します。 UserControlsはUIの一部をグループ化するために選択されました。なぜなら、デフォルトコントロールのすべてのスタイリングとテンプレート化は、あまりにも邪魔にならず、マークアップがすぐに恐ろしい、判読不能な混乱につながったからです。
ただし、マイクロソフトがこの「制限」を解決する意図がない場合は、より良い方法を見つける必要があります。接続サイトでGaryGJohnson
の回避策に見られるように、CS +外部XAMLテンプレートファイルを使用することが検討されています。しかし、これはsphagettiの感情を持っており、バインドを中断するものは何もない。
同様の問題が発生し、CustomControlアイテムを使用しました。しかし、今私はすべてがMVVMと動作を使用して行うことができることを知っています。だから私はx:Nameプロパティの使用を避けようとしています。 – vorrtex