Контекст: я создаю прототип для (возможно) преобразования моего приложения WinForms в WPF.
Я делаю очень простой обработчик событий в виде дерева, код которого:
var treeViewItem = (TreeViewItem)e.NewValue;
var treeViewItemTag = treeViewItem.Tag;
if (treeViewItemTag == "ViewForAMs")
{
ObjectQuery<AccountManagerView> oq = entities.AccountManagerViews;
var q =
from c in oq
select c;
dataGrid1.ItemsSource = q.ToList();
}
, а XAML:
<Window x:Class="AccountingWpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
<DockPanel>
<TreeView Name="treeView1" ItemsSource="{Binding Folders}"
SelectedItemChanged="treeView1_SelectedItemChanged">
<TreeViewItem Header="Account Manager View" Tag="ViewForAMs"/>
</TreeView>
<DataGrid AutoGenerateColumns="True" Name="dataGrid1" />
</DockPanel>
</Window>
Когда я запустил его, я полностью ожидал, что моя сетка данных заполнится, но сравнение == не удалось во второй строке кода выше.
Отладчик показывает следующее:
ВОПРОС: почему не было компиляции или ошибки времени выполнения? (тот же вопрос по-другому: что на самом деле сравнивается, когда оператор == выводит ЛОЖЬ?)