2015-08-25 3 views
0

У меня есть UserControl (назовем его «CustomControl»), который действует как простая панель инструментов для сетки. Он содержит только кнопку для открытия/закрытия (она просто изменяет свойство видимости) сетки.Как привязать сетку к свойству UserControl в XAML?

Как это:

<UserControl ....> 
... 
<Grid> 
    <Button x:Name="btChangeState" Content="Change State" /> 
</Grid> 
.... 
</UserControl> 

И я объявил DependencyProperty из сетки, как следующее:

public Grid MyContent 
{ 
    get { return (Grid)GetValue(MyContentProperty); } 
    set { SetValue(MyContentProperty, value); } 
} 

public static readonly DependencyProperty MyContentProperty = 
    DependencyProperty.Register("MyContent", typeof(Grid), typeof(MyControl), new PropertyMetadata(null)); 

И мой пользовательский элемент управления Кнопка имеет простой обработчик, чтобы изменить «MyContent» Grid Видимый или свернуты:

if (MyContent.Visibility == Windows.UI.Xaml.Visibility.Visible) 
    MyContent.Visibility = Windows.UI.Xaml.Visibility.Collapsed; 
else 
    MyContent.Visibility = Windows.UI.Xaml.Visibility.Visible; 

на моем ViewPage, я могу проволоки до theUserC ontrol.MyContent в Grid в конструкторе страницы, но как я могу это сделать в XAML? Я хотел бы сделать примерно следующее:

<Page .....> 
    <StackPanel Orientation="Vertical"> 
     <cs:CustomControl x:Name="theUserControl" MyContent="{Binding theGrid}" /> 
     <Grid x:Name="theGrid" Height="200" Width="200" Background="Red" /> 
    </StackPanel> 
</Page> 

Возможно ли это?

ответ

1

Вы должны использовать ElementName:

<cs:CustomControl x:Name="theUserControl" MyContent="{Binding ElementName=theGrid}" /> 
+0

Спасибо! Он работал точно так, как я хотел! :) – dijeferson

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