设置ListBox的默认值

时间:2017-02-22 06:19:53

标签: c# wpf mvvm

在我的解决方案中,我设置了列表的默认值,如下面的代码

<ListBox x:Name="SelectorList" 
         ItemsSource="{Binding ViewStatusList}"
         SelectedItem="{Binding SelectedDeviceItem,Mode=TwoWay}"        
         IsSynchronizedWithCurrentItem="True">

在我的视图模型中为SelectedDeviceItem创建属性。

private Device _selecteddeviceitem;
public Device SelectedDeviceItem
{
    get
    {
        return _selecteddeviceitem;
    }
    set
    {
        _selecteddeviceitem = value;
        OnPropertyChanged("SelectedDeviceItem");
    }
}

并通过SelectedDeviceItem = StatusList[0]; 在构造函数中。 但我的列表框仍然如下所示。

enter image description here

但我需要的结果应该像下图

enter image description here

我在这个列表框代码中遗漏了什么?

2 个答案:

答案 0 :(得分:1)

我认为这可以实现它:

  1. 将选定的ListBoxItem设置为焦点。

    private void ListBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
    {
    
        var listbox = sender as ListBox;
        var listboxItem =
            listbox?.ItemContainerGenerator.ContainerFromItem(listbox.SelectedItem) as ListBoxItem;
        listboxItem?.Focus(); 
    }
    
  2. 加载ListBox时设置焦点。这是因为可以在生成ListBoxItems之前选择它。

    private void ListBox_Loaded(object sender, RoutedEventArgs e)
    {
        var listbox = sender as ListBox;
        var listboxItem =
            listbox?.ItemContainerGenerator.ContainerFromItem(listbox.SelectedItem) as ListBoxItem;
        listboxItem?.Focus();
    }
    
  3. 请注意,在视图模型中不应该实现选择项目的逻辑,它只是一种UI逻辑。

答案 1 :(得分:-1)

似乎ListboxItem没有集中注意力。请将ListBox设置为焦点并将项目设置为焦点

var_and= A1 && A2;
var_and=var_and && A3;..
.
.
var_and=var_and && A10;