【发布时间】:2014-06-12 14:32:47
【问题描述】:
我有一个非常莫名其妙的问题。我有一个应用程序可以在大多数平台上正常工作,但不能在特定机器上工作。我们甚至在与失败的机器相同类型的机器上测试了这个应用程序,它工作得很好。它只是一台特定的机器。
问题是:在 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
【问题讨论】:
-
BackEnd.Instance.Reconfigure()的定义是什么;
-
发生这种情况的原因可能有上百万个......我们无法猜测它是什么。您可以做的最好的事情是添加某种日志记录,让您看到该机器上的代码中实际发生了什么。为代码中的每一行或函数输出一行文本。当您检查日志文件输出时,您将能够准确确定代码中的问题所在并从那里继续。
-
你忽略了细节。 set 是否被调用?
-
模拟 UpdateConfiguration 中的故障,看看在控制环境中是否出现相同的症状。
-
我可以尝试添加一些日志记录。在客户完成当天的机器之前,我无法做到这一点。 set 方法似乎根本没有被调用。我提到的两个症状证明了这一点。 @codeVillagerCU0 - BackEnd.Instance.Reconfigure() 的定义无关紧要。
标签: c# wpf xaml combobox selecteditem