Od pewnego czasu walczę z tym kodem i nie mogę znaleźć żadnych pełnych odpowiedzi na moje pytanie. Utworzyłem małą próbkę do zilustrowania problemu:Atrybut wiązania warunku nie działa?
<ListView >
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Margin="0,0,20,0" IsItemsHost="True" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.Items>
<TextBlock>Test1</TextBlock>
<TextBlock>Test2</TextBlock>
<TextBlock>Test3</TextBlock>
<TextBlock>Test4</TextBlock>
<TextBlock>Test5</TextBlock>
</ListView.Items>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Grid>
<ContentPresenter/>
</Grid>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True" />
<Condition Property="IsSelected" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Visibility" Value="Collapsed"/>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
</ListView>
Zgodnie z ustawieniami MultiTrigger, wybrana pozycja powinna się ponownie, gdy mysz nie jest już na wybranej pozycji. Ten kod generuje wyjątek InvalidOperationException z komunikatem "Musi mieć wartość inną niż null dla" Właściwość "." Jeśli usuniesz warunek, który używa atrybutu "Wiązanie", wyjątek nie zostanie zgłoszony. W dokumentacji MSDN stwierdza, że musisz mieć zestaw atrybutów Property lub Binding. Powyższy kod działa tak, jak atrybut Binding nie jest ustawiony. W rzeczywistości we wszystkich moich przypadkach testowych nie ma znaczenia, do czego jest ustawiony atrybut Wiązania; wyjątek jest nadal rzucany. jakieś pomysły?
+1 przyjmowania boneheadedness i dostarczenie rozwiązania. Ktoś inny wybiegnie przeciwko temu. Brakujące słowo "Dane" łatwo przeoczyć. –
+1 Za doprowadzenie mnie do rozwiązania o wiele szybciej niż polowanie i czytanie dokumentacji. Błąd powinien wyjaśnić to, zamiast polegać na dokumentacji. – jpierson
+1 Po prostu zrobiłem ten sam ruch w kościach. Twój post prawdopodobnie zaoszczędził mi godzinę. –