Birden çok Metin Kutusu içeren Kılavuzum var. Kullanıcıya odaklanabilecek eylemlere bağlı olarak, metin kutularından birine değiştirilmelidir. Geçerli çözümüm, ViewModel'de bir string özelliğini ve odağı değiştirmek için xaml'de bir veri tetikleyicisi kullanıyor. Güzel çalışıyor ama bunu başarmak için oldukça dolambaçlı bir yol gibi görünüyor, bu yüzden daha açık bir şekilde yapılabilir mi diye merak ediyordum? Eğer özelliğinin değeri ve elemanın adını görebileceğiniz gibiOdağı WPF'de MVVM ile ayarlama
<Grid.Style>
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding FocusedItem}" Value="number">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=number}"/>
</DataTrigger>
<DataTrigger Binding="{Binding FocusedItem}" Value="name">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=name}"/>
</DataTrigger>
<DataTrigger Binding="{Binding FocusedItem}" Value="id">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=id}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
aynıdır bu yüzden yerine eleman başına bir tetiği olan bu i tek tetik yapmak istiyorum.
Belki birisi daha temiz bir şekilde ortaya çıkabilir? peşin
Odağı neden bu şekilde ayarladığınızı sorabilir miyim? Kullanıcı TabIndex tarafından Sekme tarafından da ayarlanabildiğinden, bu çözüm sizin için çalıştığından sadece bir kez odağı – WiiMaxx
ayarlayabilmeniz gerektiğinden, bunu – blindmeis
almalısınız. Şahsen odak UI'ye özgü bir kavramdır. tüm odak noktalarım ViewModel'imde değil, görünümün arkasındaki kodda işleniyor (odaklama iş mantığında belirli bir anlamı olmadıkça). – Rachel