我遇到了一段时间以来最令人沮丧的问题,我的设置如下,最近它无缘无故地停止在客户端计算机上工作(或者我没有理由说我没有更改任何代码)本节持续了几个月,这只是在上周才开始发生)正在发生的事情是当用户点击编辑时文本不可见,奇怪的是它在调试、发布时 100% 工作(使用 VS2010)并且将程序安装在我的计算机上,我很难过我似乎可以在我自己的计算机上进行复制。我的问题很简单(虽然有点模糊)有人可以指出或告诉我在哪里调试它吗?
查看模型部分(只是一个典型的绑定):
private bool _editingSpecifications = false;
public bool EditingSpecifications
{
get { return _editingSpecifications; }
set
{
System.Windows.MessageBox.Show("In EditingSpecifications property PRE: "+value);
if (_editingTraceSpecifications == value)
return;
_editingSpecifications = value;
base.OnPropertyChanged("EditingSpecifications");
System.Windows.MessageBox.Show("In EditingSpecifications property POST");
}
}
看法:
<TextBox Visibility="{Binding Path=EditingSpecifications, Converter={StaticResource BoolToVis2}}" Text="{Binding Path=Specifications, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" Width="262">...</TextBox>
和转换器:
public class BoolToVisibiltyConverter2 : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (targetType != typeof(Visibility))
throw new InvalidOperationException("The target must be a Visibility");
System.Windows.MessageBox.Show((bool)value + " :BoolToVisibiltyConverter2");
if ((bool)value)
return Visibility.Visible;
return Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if ((Visibility)value == Visibility.Visible)
return true;
return false;
}
}
它是一个 MVVM 设置,其中 ViewModel 按需绑定到视图(即当用户希望编辑等时),上面的代码是我认为相关的所有代码(如果您需要更多,请询问:)),如您所见,我有弹出一些消息框,从中我得到这种情况:
用户加载第一个视图点击编辑消息框弹出
1)“在 EditingSpecifications 属性 PRE:”+value
2)(bool)value +“:BoolToVisibiltyConverter2”
3)“在 EditingSpecifications property POST"
一切都按预期工作,但是在加载第二个视图时(注意这甚至可能是刚刚关闭并重新打开的同一个视图)
1) "在 EditingSpecifications 属性 PRE: "+value
2) (bool)value + " :BoolToVisibiltyConverter2"- 但不是这个,所以换句话说,在第二次和任何后续尝试编辑规范时都不会调用转换器。
3)“在 EditingSpecifications 属性 POST 中”
如果您在同一个框上再次点击编辑,您只会得到:
1)“在 EditingSpecifications 属性 PRE:”+value - 这是有点预期的。
编辑-更多细节 问题是,只有在第一次编辑尝试时,文本框才会变得可见,并且在关闭和打开视图后不会在任何后续请求中变得可见:/而且我觉得它与绑定有关根据更新请求从 ViewModel 更新,但我无法复制它。
重置它的唯一方法是关闭和打开程序,正如我之前所说,我只能在客户端计算机上复制此行为,而不能在我自己的计算机上复制。所以任何人都可以请告诉我或指出我在哪里看的任何方向。