2013-04-16 5 views
2

Во-первых, увидеть этот код в MainWindowОбновление пользовательского элемента управления из MainWindow

<Grid x:Name="LayoutRoot" MinWidth="900" MinHeight="650" RenderTransformOrigin="0.5,0.5"> 
     <local:RightSideContent x:Name="rightPanel" Grid.Column="1" Width="Auto" Height="Auto"/> 

    </Grid> 

создать пользовательский элемент управления RightPanel имя и имя его в MainWindow.xaml rightPanel

примера, в пользовательском В Control RightPanel есть текстовый блок TextBlock. Затем, и я хочу обновить TextBlock, и я в MainWindow, я должен позвонить rightPanel.textblock.Text ="...".

Поэтому я считаю, что это не очень хорошо, потому что если я в другом классе, поэтому я не могу вернуться в MainWindow, чтобы обновить этот текстовый блок, и я не могу вызвать метод (статический или не) MainWindow или RightPanel для обновления. Еще раз я думаю, что это не хорошо, в любое время вы должны взаимодействовать с MainWindow, вместо этого я думаю, что мы должны отправить прямо сообщение RightPanel.

Пожалуйста, помогите мне, спасибо и простите, если мой английский недостаточно ясен!

ответ

3

Вы можете добавить свойство зависимостей к своему пользовательскому элементу RightSideContent для обработки текста. Это позволит вам привязать его непосредственно из вашего xaml MainWindow.

Пользовательское управление RightSideContent может просто привязать textblock.Text к этому свойству зависимости, отображая, что там есть.

2

Вы можете создать Dependency Property под названием «Текст», а затем привязать его к свойству DataContext MainWindow.

Предполагая, что вы не следуете шаблону MVVM, у вас будет некоторое свойство в вашем MainWindow.cs, позади кода. Например:

private string _rightSideText = string.Empty; 
public string RightSideText 
{ 
    get { return _rightSideText; } 
    set 
    { 
     _rightSideText = value; 
     OnPropertyChanged("RightSideText"); 
    } 
} 

Это предполагает, что вы внедрили INotifyPropertyChanged на вашем MainWindow.

Тогда в вашей MainWindow XAML:

<Grid x:Name="LayoutRoot" MinWidth="900" MinHeight="650" RenderTransformOrigin="0.5,0.5"> 
    <local:RightSideContent Text="{Binding Path=RightSideText}" x:Name="rightPanel" Grid.Column="1" Width="Auto" Height="Auto"/> 
</Grid> 

Это предполагает, как вы добавили свойство зависимостей.

Как только это будет сделано, все, что вам нужно сделать, это установить «RightSideText» всякий раз, когда вы хотите изменить текст.

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

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