在我的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);
提前致谢
答案 0 :(得分:0)
发布和阅读评论后,听起来问题是UI样式。我发现Expression Blend是一个用于在控件上编写样式和模板的有用工具。我倾向于直接编写XAML代码,但Expression有一个编辑器和一些很好的工具,用于设置视觉状态,视觉触发器,选择颜色等等。 You can get a trial of Blend here。很多WPF开发人员使用的另一个工具是Kaxaml。