listView_SelectionChanged
을 코드 숨김에서 멀리 이동하고 내 ViewModel
(또는 직접 XAML) 내에서 직접 처리하려고합니다. 그리고 저는 누군가가 이것을 구현하는 방법에 대해 더 좋은 아이디어를 가지길 희망했습니다.ListBox를 사용하여 MVVM을 사용하여 TextBox를 탐색하십시오.
TextBox은 섹션을 포함합니다. [Secion1]
및 내비게이션을 돕기 위해 의 측면에 모든 섹션 목록이 포함 된 ListBox이 있습니다. 섹션 중 하나를 클릭하면 텍스트의 해당 부분으로 자동으로 이동합니다.
코드는 현재이 같은 같습니다
XAML
ListBox ItemsSource="{Binding Path=Sections}" Name="listBox"
SelectionMode="Single" Width="170"
DisplayMemberPath="Section"
SelectionChanged="listView_SelectionChanged"/>
<TextBox Name="TextBox1" Text="{Binding Path=Source}"/>
모델을
public class SourceData
{
public SourceData()
{
Sections = new List<SectionData>();
}
public String Source { get; set; }
public List<SectionData> Sections { get; set; }
}
public class SectionData
{
public int Line { get; set; } // Line of the Section
public String Section { get; set; } // Section name (e.g. [Section1]
}
숨김 코드
private void listView_SelectionChanged(object sender,
System.Windows.Controls.SelectionChangedEventArgs e)
{
var test = (SectionData)listBox.SelectedItem; // Get Information on the Section
if (test.Line > 0 && test.Line <= TextBox1.LineCount) // Validate
{
TextBox1.ScrollToLine(test.Line - 1); // Scroll to Line
}
}
덕분에 많은 Snowbear : : 여기
P.S은 연결 동작처럼 보이는 방법을 샘플입니다. 전에 (ACB 외에) 첨부 된 행동을 사용하지 않았지만, 귀하의지도로 나는 그것을 얻었고 일했습니다. – eandersson
@Fuji, 첨부 된 비헤이비어는 MVVM 개념의 view 및 viewModels를 결합하는 데 매우 중요합니다. AB가 많은 도움을 줄 수있는 많은 사례가 있습니다. – Snowbear
그래, 다시 한 번 감사드립니다. 스노우 보드, 내 응용 프로그램이 확장 될 때 이것이 유용 할 수있는 더 많은 상황이있을 것이라 확신합니다. 귀하의 예제 코드에서 새로운 PropertyMetadata 안에 새 PropertyChangedCallback이 누락되었습니다. – eandersson