Синхронизация прокрутки Listbox и Textbox/TextBlock control WPF
Я пытаюсь создать WPF Usercontrol, где есть три элемента управления
-список
-Текстовое поле или текстовый блок
-полоса прокрутки
Я хочу синхронизировать прокрутку между всеми ними.
<Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="100"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="20*" /> </Grid.ColumnDefinitions> <ListBox Grid.Column="0" HorizontalAlignment="Left" Name="lstNumber" Width="100" FontFamily="Courier New" FontSize="12" Background="Aqua" ScrollViewer.HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Hidden" ScrollViewer.ScrollChanged="RichTextBox_ScrollChanged"/> <TextBox Grid.Column="1" HorizontalAlignment="Stretch" Name="txtData" Width="Auto" FontFamily="Courier New" FontSize="12" Margin="101,0,0,0" ScrollViewer.HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Hidden" ScrollViewer.ScrollChanged="RichTextBox_ScrollChanged"/> <ScrollBar Grid.Column="3" HorizontalAlignment="Right" Scroll="ScrollBar_Scroll"/> </Grid>
Связанный код C# для этого события.
private void RichTextBox_ScrollChanged(object sender, ScrollChangedEventArgs e) { if (sender == txtData) { //what to do now? } if (sender == lstNumber) { //what to do now? } }
Как добиться такой функциональности?
Subramanyam Shankar
используйте прокрутку в поле зрения . используйте его как каскад, так что если одно изменяется, то меняется и другое.
Sergey Alexandrovich Kryukov
Вообще, это очень плохая дизайнерская идея. Вы можете потратить на это слишком много времени и все равно получить плохие результаты. Я бы посоветовал вместо этого перепроектировать пользовательский интерфейс. Возможно, я мог бы помочь, но я не знаю конечных целей этой деятельности.
—СА