我有一个非常令人困惑的问题。我有一个应用程序在大多数平台上运行良好,但不适用于特定的机器。我们甚至在与失败的机器相同类型的机器上测试了这个应用程序,它运行得很好。它只是一台特定的机器。
问题在于:在GUI中选择新项目时,绑定到ComboBox的SelectedItem属性的属性不会更改。
我想强调的是,我们测试的每台机器都可以正常工作。只有一台机器出现故障(不幸的是,它在客户手中!)。
绑定是
<ComboBox Grid.Row="4"
Grid.Column="1"
Width="160"
Height="28"
Margin="0, 10, 0, 0"
FontSize="18"
VerticalContentAlignment="Center"
ItemsSource="{Binding VM.Names}"
SelectedItem="{Binding VM.CurrentName}" />
相关的视图模型代码是
public ObservableCollection<string> Names
{
set
{
m_names = value;
OnPropertyChanged("Names");
}
get { return m_names; }
}
public string CurrentName
{
set
{
m_currentName = value;
OnPropertyChanged("CurrentName");
// Set back end cfg
UpdateConfiguration(CurrentName);
// Clear everything in UI
ResetAll();
}
get { return m_currentName; }
}
private ObservableCollection<string> m_names;
private string m_currentName;
private void UpdateConfiguration(string name)
{
if (string.Equals(name, "John", StringComparison.CurrentCultureIgnoreCase))
{
Config.LastName = "Doe";
}
else
{
Config.LastName = "Smith";
}
// Configure back end
BackEnd.Instance.Reconfigure();
}
(原谅UpdateConfiguration()函数。我修改了它但是尽可能完整地保留了它,而没有泄露任何公司的敏感信息)
我们在失败的机器上观察到的两个明显症状是: 1)Name的当前值不会在退出时保存到文件中。该值在所有其他计算机上正确保存。 2)不调用ResetAll()函数。
我很感激任何人都知道为什么这只会在一台机器上失败。我也很感激有关如何解决问题或解决问题的任何建议。
非常感谢!
JAB
答案 0 :(得分:0)
我发现了问题。这是.NET版本。
我们的产品不使用.NET 4.5,但我们一直在安装它。如果启动我们的应用程序,它会将.NET版本报告为4.0.30319.18408。我们在客户机器上的应用报告4.0.30319.17929。不同之处在于客户安装了.NET 4.5,我们安装了.NET 4.5.1。
安装.NET 4.5.1可以解决问题。