ListBox项突出显示或选中混淆

时间:2011-06-22 08:19:24

标签: .net wpf mvvm listbox

在我的ListBox中,我有5个数字1 - 5,SelectedItem是在TwoWay模式下的数据绑定到SelectedAmount,一个int属性,默认值为1,每当我运行应用程序时,我有1作为选择的值并在我的上突出显示ListBox,这非常好,但现在每当我将值更改为2或任何其他值时,ListBox显示新值但它没有突出显示,并且SelectedAmount仍然保持旧值,这显然是坏的,我希望每当用户更改所选值,SelectedAmount直接获取新值,用户现在做出选择后,必须再次单击以突出显示它。任何想法?

<ListBox ItemsSource="{Binding SiliconAmounts}" SelectedItem="{Binding SiliconAmount,Mode=TwoWay}" Height="31" HorizontalAlignment="Left" Margin="83,148,0,0" VerticalAlignment="Top" Width="149" IsTabStop="True" TabIndex="4" />

我的属性数据绑定到selectedItem看起来像

public int SiliconAmount
    {
        get
        {
            return _SiliconAmount;
        }
        set
        {
            if (_SiliconAmount != value)
            {
                _SiliconAmount =value;
                OnPropertyChanged("SiliconAmount");
            }
        }
    }

我的items属性看起来像

public ObservableCollection<int> SiliconAmounts
    {
        get { return _SiliconAmounts; }
        set
        {
            if (_SiliconAmounts != value)
            {
                _SiliconAmounts = value;
                OnPropertyChanged("SiliconAmounts");
            }
        }
    }

在我的viewModel构造函数

SiliconAmounts = new ObservableCollection<int>();
        SiliconAmounts.Add(1);
        SiliconAmounts.Add(2);
        SiliconAmounts.Add(3);
        SiliconAmounts.Add(4);
        SiliconAmounts.Add(5);

提前致谢

1 个答案:

答案 0 :(得分:0)

发布和阅读评论后,听起来问题是UI样式。我发现Expression Blend是一个用于在控件上编写样式和模板的有用工具。我倾向于直接编写XAML代码,但Expression有一个编辑器和一些很好的工具,用于设置视觉状态,视觉触发器,选择颜色等等。 You can get a trial of Blend here。很多WPF开发人员使用的另一个工具是Kaxaml