В WPF У меня есть ListView кто есть ItemSource привязан к ObservableCollection:WPF: Привязка Вне ObservableCollection в ListView в
<ListView ItemsSource="{Binding Path=TestList, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
TestList представляет собой коллекцию типа TestCase, который имеет несколько членов. Это отлично подходит для заполнения столбцов ListView информацией из членов TestList, но мне также необходимо получить доступ к свойствам вне коллекции.
Существует ComboBox (вне ListView), который изменяет, какие элементы управления отображаются в определенных столбцах. Я пытался сделать это с установкой DataTrigger на свойстве Видимости:
<GridViewColumn Header="Area" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Area}">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Setters>
<Setter Property="Visibility" Value="Visible"/>
</Style.Setters>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IdentitySelection}" Value="Test Management">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
У меня также есть несколько других мест, где мне нужны привязки снаружи TestList (например, заполнение ComboBoxes в CellTemplates). Тем не менее, ListView, похоже, не получает данные из ничего вне ItemSource.
Я попытался двигаться TestList и IdentitySelection в один класс (TestManager), заявив, что в качестве одного, большой собственности, и переплета к этому:
<ListView ItemsSource="{Binding Path=TestManager, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
<ListView.View>
<GridView>
<GridViewColumn Header="Area" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=TestList.Area}">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Setters>
<Setter Property="Visibility" Value="Visible"/>
</Style.Setters>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IdentitySelection}" Value="Test Management">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
Это тоже не сработало. Мне нужно что-то изменить в контексте данных? Я чувствую, что должен быть способ сделать это. Любые идеи приветствуются.
Perfect. Спасибо, BradleyDotNET. –