비슷한 스레드가 있음을 알고 있지만 여전히 최상의 구현을 확신 할 수 없습니다.형제 컨트롤의 ViewModel에 액세스
코드는 자체 설명이어야합니다. 주석을 확인하십시오. 해당 VIewModel에 액세스하는 가장 좋은 방법.
부분 : FontSearchBox는 ViewModel이없는 UserControl입니다. - 명령을 실행할 필요가있는 것을 검색하기위한 TextBox 만 보유하고 있습니다.
감사합니다. 당신이 텍스트 상자 XAML에 TextBox
그래서 가지고해야 <vw:FontTreeView />
당신의 UserControl에서
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="35" />
<RowDefinition Height="90" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<part:MainWindowControls Grid.Row="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Source="/Typesee;component/Resources/window_logo.png" Width="156" Height="45" Grid.Column="0" VerticalAlignment="Top" RenderOptions.BitmapScalingMode="NearestNeighbor" />
<!-- THIS TEXTBOX NEEDS TO CALL A COMMAND (SearchCommand.Execute(string)) Which resides in the fontTreeViewControl's ViewModel (FontTreeViewModel) -->
<part:FontSearchBox Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,0,12,10" Width="250" DataContext="{Binding ElementName=fontTreeViewControl, Path=DataContext}" />
</Grid>
<vw:FontTreeView x:Name="fontTreeViewControl" Grid.Row="2" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />
</Grid>
이 텍스트 상자에 명령이 필요합니까? Textbox가 어떻게 명령을 호출 할 수 있습니까? 'part : FontSearchBox'의 일부 속성을'fontTreeViewControl의 ViewModel'에 바인딩하고 싶습니까? – sll
코드에서 textchanged와 같은 이벤트에 대해 명령을 호출하려고합니다. AttachedProperty를 만들고이를 xaml에서 바인드해야합니까? –