2014-01-14 4 views
0

У меня есть UserControl, давайте назовем это «MyUserControl», многоразовые по проекту, как это:Как игнорировать родительский контейнер в UserControl?

<WrapPanel> 
<TextBlock Text="{Binding}" /> 
<ComboBox ItemsSource="{Binding}" /> 
</WrapPanel> 

Теперь я использую пользовательский элемент управления под названием «TwoColumnGrid» нашли в CodeProject. Полный Article. короткая версия http://www.codeproject.com/KB/WPF/TwoColumnGrid/child-ordering.png И я это делаю:

<Custom:TwoColumnGrid> 
<MyUserControl /> 
<TextBlock /> 
<TextBox /> 
</Custom:TwoColumnGrid> 

Как он, TwoColumnGrid не работает. Я хочу заставить его думать, что MyUserControl - это два элемента, которые он содержит. Таким образом:

<Custom:TwoColumnGrid> 
<TextBlock Text="{Binding}" /> 
<ComboBox ItemsSource="{Binding}" /> 
<TextBlock /> 
<TextBox /> 
</Custom:TwoColumnGrid> 

Я пробовал играть с визуальным рисунком, добавляя его программно и создавая объект исключительно программно. Удалось, чтобы он работал, удаляя и добавляя к детям, но привязка не работала, что она делала с помощью XAML.

Возможно, хорошие люди SO могут помочь, любые идеи?

EDIT: Я использую MyUserControl более одного раза на TwoColumnGrid. Как так:

<Custom:TwoColumnGrid> 
    <MyUserControl /> 
    <TextBlock /> 
    <TextBox /> 
    <MyUserControl /> 
</Custom:TwoColumnGrid> 
+0

У меня нет опыта работы с WPF, но я бы предположил, что вы * не можете заставить его думать, что это два элемента, потому что это * не *. И если предположить, что это может сломать ваш код позже, если вы добавите третий элемент в пользовательский элемент управления (возможно, скрытое поле?). – Bobson

+0

Не уверен в этом, создавая их по коду за ним, но привязки никогда не застревали, хотя на XAML они работали. Скрытое поле не будет работать, usercontrol все равно будет считаться одним элементом. – user3195132

ответ

0

Я бы создать 2 маленьких элементы управления (один для TextBlock, других для Combobox) и использовать как для создания MyUserControl. Это означает, что вы можете использовать MyUserControl в качестве большого мира, и вы можете использовать две более мелкие части в своем TwoColumnGrid без дублирования кода/XAML.

+0

Тогда вы можете потерять любую специальную логику, которая связывает их вместе. – Bobson

+0

Да, Бобсон прав, я должен был сказать, но я вызываю usercontrol более одного раза, и это связано с привязками. Возможным, но не правым. – user3195132

Смежные вопросы