Я довольно новичок в WPF, так что извините за любой тупой вопрос ...
У меня есть ListView с тремя столбцами, который связан с источником XmlDataProvider, как показано ниже:
<XmlDataProvider x:Key="Properties" XPath="/Info">
<x:XData>
<Info xmlns="">
<Property Name="Text" Value=""/> <!--0-->
<Property Name="Tooltip" Value=""/> <!--1-->
<Property Name="Enable" Value=""/> <!--2-->
<Property Name="Visible" Value=""/> <!--3-->
<Property Name="Focus" Value=""/> <!--4-->
<Property Name="Selected" Value=""/> <!--5-->
<Property Name="Count" Value=""/> <!--6-->
<Property Name="Item" Value=""/> <!--7-->
<Property Name="SelectedText" Value=""/> <!--8-->
<Property Name="SelectedIndex" Value=""/> <!--9-->
<Property Name="Complete" Value=""/> <!--10-->
</Info>
</x:XData>
</XmlDataProvider>
ListView определяется следующим образом:
<ListView Name="lstProperties" Margin="55 0 0 0" Style="{DynamicResource TsListView}"
Grid.Row="2" Grid.RowSpan="7" Grid.ColumnSpan="4"
ItemsSource="{Binding Source={StaticResource Properties}, XPath=Property}"
ItemContainerStyle="{DynamicResource TsListViewItem}"
ScrollViewer.HorizontalScrollBarVisibility="Hidden"
SelectionMode="Single" IsEnabled="False"
SelectionChanged="propertySelected"
>
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridViewColumn CellTemplate="{StaticResource FirstCell}" Width="25" />
<GridViewColumn Header="Property" Width="80">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Label Style="{DynamicResource TsLabel}" Height="25" Width="115" Content="{Binding XPath=@Name}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Value" Width="130">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Style="{DynamicResource TsHelperTextBox}"
Height="20" Width="115" Text="{Binding XPath=@Value}"
IsEnabled="{Binding ElementName=rbTypeAssert, Path=IsChecked}" GotFocus="gridTextBox_GotFocus" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
То, что я хочу сделать сейчас, довольно просто: я просто хочу включить / отключить некоторые из ListViewItems.
Единственный способ получить ListViewItems - это следующий метод:
lstProperties.ItemContainerGenerator.ContainerFromIndex(index)
Это заставляет меня чувствовать себя немного неловко. Я должен получать Предметы через свойство name объекта Property. Есть какой-либо способ сделать это?
У меня также возникают проблемы, когда я пытаюсь сделать это сразу после инициализации окна. Я получаю исключение NullReferenceException при попытке отключить один из этих ListViewItems. Кажется, что сразу после рендеринга окна привязка еще не завершена.