我正面临以下问题。当我从具有键盘焦点的列表框中删除第一个元素时(通过刷新项目源),键盘焦点将移动到父窗口。我想将键盘焦点保留在第一个列表框项目上。所以我想出了以下代码
<Grid.Resources>
<Style TargetType="{x:Type ListBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding FirstRowDeleted}" Value="True">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=MyListBox}" />
</DataTrigger>
</Style.Triggers>
</Style>
使用此代码,我可以将焦点移动到列表框本身。如何将焦点移动到第一个列表框项? MyListBox [0]似乎不起作用。有什么建议吗?
感谢你 Kaddy
答案 0 :(得分:0)
我在这里找到答案:How do you programmatically set focus to the SelectedItem in a WPF ListBox that already has focus?
var listBoxItem = (ListBoxItem) MainListBox
.ItemContainerGenerator
.ContainerFromItem(MainListBox.SelectedItem);
listBoxItem.Focus();
感谢@Jeff的回答。
答案 1 :(得分:-1)
此代码在页面加载时将焦点功能应用于第一个输入文本。试试吧
class Makine : #This is where i def my printing machine class#
def __init__(self):
self.murekkep=100 #this means ink#
self.şarj=100 #this means charge
self.devir=0 #this means how many turns did machine worked#
self.mevcutDergi=[] #this means list of printed magazines#
def calis(self): #this means the work function for machine#
if self.murekkep>=10 and self.şarj>=5:
print("Makine çalışıyor.")
self.murekkep-=10
self.şarj-=5
self.devir+=1
elif self.murekkep<10 :
print("Yetersiz mürekkep!")
elif self.şarj<5 :
print("Yetersiz şarj!")
elif self.devir==10 :
a=input()
print("Yeni dergi çıktı!\nDerginin adı : "+ a)
mevcutDergi.append(a)
self.devir = 0
def murekkepDoldur(self): #this means add ink function#
if self.murekkep<=80:
self.murekkep+=20
print("Mürekkep dolduruldu!\nYeni mürekkep seviyesi yüzde
",self.murekkep)
def şarjDoldur(self): #this means charge battery function#
if self.şarj<=95:
self.şarj+=5
print("Şarj dolduruldu!\nYeni şarj seviyesi yüzde
",self.şarj)
def mevcutDurum(self): #this means show status function#
print("Makinenin murekkebi % ",self.murekkep,
"\nMakinenin şarjı % ", self.şarj,
"\nMakinenin devir sayısı : " ,self.devir,
"\nMevcut dergiler : ",self.mevcutDergi)
makine1=Makine
while True :
print("-"*30)
print("Matbaa Makinesi v0.1\n",
"Makineyi çalıştırmak için->1\n",
"Murekkep doldurmak için->2\n",
"Şarj doldurmak için->3\n",
"Mevcut durumu öğrenmek için->4")
print("-"*30)
komut = int(input())
if komut==1:
makine1.calis()
elif komut==2:
makine1.murekkepDoldur()
elif komut==3:
makine1.şarjDoldur()
elif komut==4:
makine1.mevcutDurum()
else :
print("Hatalı komut girdiniz!")