두 개의 다른 명령이 있습니다. 각각은 몇 가지 행동을 수행하고 형태를 드러냅니다. Visible
속성을 true
으로 설정할 때 해당 형식의 첫 번째 텍스트 상자에 포커스를 설정하기를 원합니다.메서드 실행시 텍스트 상자에 포커스 설정
나는이 주제에 대해 모든 종류의 SO 관련 기사를 보았지만 그 조각들을 함께 맞추는 것처럼 보이지 않습니다. 저는 MVVM으로 작업하고 있습니다 만, 모든 MVVM 솔루션은 QoL을 향상시키는 것만 큼 넓게 보입니다. 나는 코드 번호 코드를 내 codebehind 파일에 가지고 있으므로, 그냥 거기에 넣고 더 빨리/더 깨끗한 솔루션을 가질 수 있다고 가정 했었지만 초기에 주로 집중할 수있었습니다.
나는 Focusmanager를 망쳐 놓았지만, 아무데도 나를 데려 오지 않는 것 같습니다.
전체 구성의 까다로운 부분은 다음과 같습니다.
<ListBox Grid.Column="0" Grid.Row="1" Margin="5" IsEnabled="{Binding IsEnabled}" ItemsSource="{Binding DisabledConfigs}" SelectionMode="Extended" SelectedItem="{Binding SelectedConfig}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<cmd:EventToCommand Command="{Binding SelectionChanged}"/>
</i:EventTrigger>
<i:EventTrigger EventName="MouseDoubleClick">
<cmd:EventToCommand Command="{Binding EditConfig}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ListBox>
EditConfig -Command
는 더블 클릭 객체의 일부 속성을 확인하는 방법을 트리거하고, 어느 한 형태를 도시 여부. 그럴 때 해당 양식의 첫 번째 텍스트 상자에 포커스가 있어야합니다. 그렇지 않으면 중요성이 전혀 없습니다.지금 내 전체 아침이 바보 삶의 질-문제로 고전을 면치 못하고, 그래서 내가 깨끗하게 채택 할 수있는 방향으로 날 포인트 누구 이건 내 왼쪽 신장을 기증 할 준비 해요 ..
편집 : AdminSoftDK에 의해 제안 후 나는 내가이 솔루션에 매우 근접해야합니다 확신 다음
// Auto-generated
private void nameBoxEdit_IsVisibleChanged(object sender, System.Windows.DependencyPropertyChangedEventArgs e)
{
if (nameBoxEdit.IsVisible)
{
// nameBoxEdit is (quite self-explanatory) the textbox that I want to focus on
nameBoxEdit.Focus();
}
}
했지만, 그대로 작동하지 않습니다.
왜 솔루션이 "창 표시시 탭 순서로 첫 번째 UI 요소를 포커스합니까?" – dymanoid
@dymanoid는 표시되는 창이 아니기 때문에 그룹 상자에 'Visible'-property가 false로 설정되어 있습니다. true로 설정된 경우에만 (다른 UI 요소를 두 번 클릭하여) 포커스를 표시하고 받아야합니다. – Ciphra
View (* dirty * MVVM)에 포커스 제어 로직을 입력하십시오. ViewModel은 필요한 모든 것을 제공 할 수 있습니다 : 이벤트, 포커스는 명령, 속성, 어떤 컨트롤에서 포커스를 얻어야하는지 등을 추상화해야하는 경우 변경할 수 있습니다. – Sinatr